beautify/format source code with gnu indent
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@9505 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
cb8ae0ab98
commit
68891541d1
72 changed files with 27038 additions and 28016 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -16,9 +16,9 @@ char cvsroot_expr_c[] = "$Header$";
|
|||
static SwigScanner *scan = 0;
|
||||
|
||||
typedef struct {
|
||||
int op;
|
||||
long value;
|
||||
String *svalue;
|
||||
int op;
|
||||
long value;
|
||||
String *svalue;
|
||||
} exprval;
|
||||
|
||||
#define EXPR_TOP 1
|
||||
|
|
@ -27,11 +27,11 @@ typedef struct {
|
|||
#define EXPR_GROUP 4
|
||||
#define EXPR_UMINUS 100
|
||||
|
||||
static exprval stack[256]; /* Parsing stack */
|
||||
static int sp = 0; /* Stack pointer */
|
||||
static int prec[256]; /* Precedence rules */
|
||||
static int expr_init = 0; /* Initialization flag */
|
||||
static char *errmsg = 0; /* Parsing error */
|
||||
static exprval stack[256]; /* Parsing stack */
|
||||
static int sp = 0; /* Stack pointer */
|
||||
static int prec[256]; /* Precedence rules */
|
||||
static int expr_init = 0; /* Initialization flag */
|
||||
static char *errmsg = 0; /* Parsing error */
|
||||
|
||||
/* Initialize the precedence table for various operators. Low values have higher precedence */
|
||||
static void init_precedence() {
|
||||
|
|
@ -66,9 +66,9 @@ static void init_precedence() {
|
|||
/* Reduce a single operator on the stack */
|
||||
/* return 0 on failure, 1 on success */
|
||||
static int reduce_op() {
|
||||
long op_token = stack[sp-1].value;
|
||||
long op_token = stack[sp - 1].value;
|
||||
assert(sp > 0);
|
||||
assert(stack[sp-1].op == EXPR_OP);
|
||||
assert(stack[sp - 1].op == EXPR_OP);
|
||||
/* do some basic checking first: */
|
||||
if (stack[sp].op != EXPR_VALUE) {
|
||||
errmsg = "Right-hand side is not value";
|
||||
|
|
@ -90,23 +90,23 @@ static int reduce_op() {
|
|||
errmsg = "Left-hand side of binary operator is not a value";
|
||||
return 0;
|
||||
}
|
||||
if ((!stack[sp-2].svalue) != (!stack[sp].svalue)) {
|
||||
if ((!stack[sp - 2].svalue) != (!stack[sp].svalue)) {
|
||||
errmsg = "Can't mix strings and integers in expression";
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if (stack[sp].svalue) {
|
||||
/* A binary string expression */
|
||||
switch(stack[sp-1].value) {
|
||||
switch (stack[sp - 1].value) {
|
||||
case SWIG_TOKEN_EQUALTO:
|
||||
stack[sp-2].value = (Strcmp(stack[sp-2].svalue,stack[sp].svalue) == 0);
|
||||
Delete(stack[sp-2].svalue);
|
||||
stack[sp - 2].value = (Strcmp(stack[sp - 2].svalue, stack[sp].svalue) == 0);
|
||||
Delete(stack[sp - 2].svalue);
|
||||
Delete(stack[sp].svalue);
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_NOTEQUAL:
|
||||
stack[sp-2].value = (Strcmp(stack[sp-2].svalue,stack[sp].svalue) != 0);
|
||||
Delete(stack[sp-2].svalue);
|
||||
stack[sp - 2].value = (Strcmp(stack[sp - 2].svalue, stack[sp].svalue) != 0);
|
||||
Delete(stack[sp - 2].svalue);
|
||||
Delete(stack[sp].svalue);
|
||||
sp -= 2;
|
||||
break;
|
||||
|
|
@ -116,89 +116,89 @@ static int reduce_op() {
|
|||
break;
|
||||
}
|
||||
} else {
|
||||
switch(op_token) {
|
||||
switch (op_token) {
|
||||
case SWIG_TOKEN_STAR:
|
||||
stack[sp-2].value = stack[sp-2].value * stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value * stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_EQUALTO:
|
||||
stack[sp-2].value = stack[sp-2].value == stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value == stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_NOTEQUAL:
|
||||
stack[sp-2].value = stack[sp-2].value != stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value != stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_PLUS:
|
||||
stack[sp-2].value = stack[sp-2].value + stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value + stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_MINUS:
|
||||
stack[sp-2].value = stack[sp-2].value - stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value - stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_AND:
|
||||
stack[sp-2].value = stack[sp-2].value & stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value & stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_LAND:
|
||||
stack[sp-2].value = stack[sp-2].value && stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value && stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_OR:
|
||||
stack[sp-2].value = stack[sp-2].value | stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value | stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_LOR:
|
||||
stack[sp-2].value = stack[sp-2].value || stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value || stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_XOR:
|
||||
stack[sp-2].value = stack[sp-2].value ^ stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value ^ stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_LESSTHAN:
|
||||
stack[sp-2].value = stack[sp-2].value < stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value < stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_GREATERTHAN:
|
||||
stack[sp-2].value = stack[sp-2].value > stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value > stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_LTEQUAL:
|
||||
stack[sp-2].value = stack[sp-2].value <= stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value <= stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_GTEQUAL:
|
||||
stack[sp-2].value = stack[sp-2].value >= stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value >= stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_NOT:
|
||||
stack[sp-1].value = ~stack[sp].value;
|
||||
stack[sp - 1].value = ~stack[sp].value;
|
||||
sp--;
|
||||
break;
|
||||
case SWIG_TOKEN_LNOT:
|
||||
stack[sp-1].value = !stack[sp].value;
|
||||
stack[sp - 1].value = !stack[sp].value;
|
||||
sp--;
|
||||
break;
|
||||
case EXPR_UMINUS:
|
||||
stack[sp-1].value = -stack[sp].value;
|
||||
stack[sp - 1].value = -stack[sp].value;
|
||||
sp--;
|
||||
break;
|
||||
case SWIG_TOKEN_SLASH:
|
||||
stack[sp-2].value = stack[sp-2].value / stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value / stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_PERCENT:
|
||||
stack[sp-2].value = stack[sp-2].value % stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value % stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_LSHIFT:
|
||||
stack[sp-2].value = stack[sp-2].value << stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value << stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
case SWIG_TOKEN_RSHIFT:
|
||||
stack[sp-2].value = stack[sp-2].value >> stack[sp].value;
|
||||
stack[sp - 2].value = stack[sp - 2].value >> stack[sp].value;
|
||||
sp -= 2;
|
||||
break;
|
||||
default:
|
||||
|
|
@ -218,14 +218,14 @@ static int reduce_op() {
|
|||
* Initialize the expression evaluator
|
||||
* ----------------------------------------------------------------------------- */
|
||||
|
||||
void
|
||||
Preprocessor_expr_init (void) {
|
||||
if (!expr_init) init_precedence();
|
||||
if (!scan) scan = NewSwigScanner();
|
||||
void Preprocessor_expr_init(void) {
|
||||
if (!expr_init)
|
||||
init_precedence();
|
||||
if (!scan)
|
||||
scan = NewSwigScanner();
|
||||
}
|
||||
|
||||
void
|
||||
Preprocessor_expr_delete (void) {
|
||||
void Preprocessor_expr_delete(void) {
|
||||
SwigScanner_clear(scan);
|
||||
DelSwigScanner(scan);
|
||||
}
|
||||
|
|
@ -235,11 +235,12 @@ Preprocessor_expr_delete (void) {
|
|||
* Tokenizer
|
||||
* ----------------------------------------------------------------------------- */
|
||||
|
||||
static int expr_token(SwigScanner *s) {
|
||||
static int expr_token(SwigScanner * s) {
|
||||
int t;
|
||||
while(1) {
|
||||
while (1) {
|
||||
t = SwigScanner_token(s);
|
||||
if (!((t == SWIG_TOKEN_BACKSLASH) || (t == SWIG_TOKEN_ENDLINE))) break;
|
||||
if (!((t == SWIG_TOKEN_BACKSLASH) || (t == SWIG_TOKEN_ENDLINE)))
|
||||
break;
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
|
@ -250,20 +251,19 @@ static int expr_token(SwigScanner *s) {
|
|||
* Evaluates an arithmetic expression. Returns the result and sets an error code.
|
||||
* ----------------------------------------------------------------------------- */
|
||||
|
||||
int
|
||||
Preprocessor_expr(DOH *s, int *error) {
|
||||
int token = 0;
|
||||
int op = 0;
|
||||
int Preprocessor_expr(DOH *s, int *error) {
|
||||
int token = 0;
|
||||
int op = 0;
|
||||
|
||||
sp = 0;
|
||||
assert(s);
|
||||
assert(scan);
|
||||
|
||||
Seek(s,0,SEEK_SET);
|
||||
Seek(s, 0, SEEK_SET);
|
||||
/* Printf(stdout,"evaluating : '%s'\n", s); */
|
||||
*error = 0;
|
||||
SwigScanner_clear(scan);
|
||||
SwigScanner_push(scan,s);
|
||||
SwigScanner_push(scan, s);
|
||||
|
||||
/* Put initial state onto the stack */
|
||||
stack[sp].op = EXPR_TOP;
|
||||
|
|
@ -271,7 +271,7 @@ Preprocessor_expr(DOH *s, int *error) {
|
|||
|
||||
while (1) {
|
||||
/* Look at the top of the stack */
|
||||
switch(stack[sp].op) {
|
||||
switch (stack[sp].op) {
|
||||
case EXPR_TOP:
|
||||
/* An expression. Can be a number or another expression enclosed in parens */
|
||||
token = expr_token(scan);
|
||||
|
|
@ -283,13 +283,14 @@ Preprocessor_expr(DOH *s, int *error) {
|
|||
if ((token == SWIG_TOKEN_INT) || (token == SWIG_TOKEN_UINT) || (token == SWIG_TOKEN_LONG) || (token == SWIG_TOKEN_ULONG)) {
|
||||
/* A number. Reduce EXPR_TOP to an EXPR_VALUE */
|
||||
char *c = Char(SwigScanner_text(scan));
|
||||
stack[sp].value = (long) strtol(c,0,0);
|
||||
stack[sp].value = (long) strtol(c, 0, 0);
|
||||
stack[sp].svalue = 0;
|
||||
/* stack[sp].value = (long) atol(Char(SwigScanner_text(scan))); */
|
||||
/* stack[sp].value = (long) atol(Char(SwigScanner_text(scan))); */
|
||||
stack[sp].op = EXPR_VALUE;
|
||||
} else if (token == SWIG_TOKEN_PLUS) { }
|
||||
else if ((token == SWIG_TOKEN_MINUS) || (token == SWIG_TOKEN_LNOT) || (token==SWIG_TOKEN_NOT)) {
|
||||
if (token == SWIG_TOKEN_MINUS) token = EXPR_UMINUS;
|
||||
} else if (token == SWIG_TOKEN_PLUS) {
|
||||
} else if ((token == SWIG_TOKEN_MINUS) || (token == SWIG_TOKEN_LNOT) || (token == SWIG_TOKEN_NOT)) {
|
||||
if (token == SWIG_TOKEN_MINUS)
|
||||
token = EXPR_UMINUS;
|
||||
stack[sp].value = token;
|
||||
stack[sp++].op = EXPR_OP;
|
||||
stack[sp].op = EXPR_TOP;
|
||||
|
|
@ -299,7 +300,7 @@ Preprocessor_expr(DOH *s, int *error) {
|
|||
stack[sp].op = EXPR_TOP;
|
||||
stack[sp].value = 0;
|
||||
stack[sp].svalue = 0;
|
||||
} else if (token == SWIG_TOKEN_ENDLINE) {
|
||||
} else if (token == SWIG_TOKEN_ENDLINE) {
|
||||
} else if ((token == SWIG_TOKEN_STRING)) {
|
||||
stack[sp].svalue = NewString(SwigScanner_text(scan));
|
||||
stack[sp].op = EXPR_VALUE;
|
||||
|
|
@ -307,7 +308,8 @@ Preprocessor_expr(DOH *s, int *error) {
|
|||
stack[sp].value = 0;
|
||||
stack[sp].svalue = 0;
|
||||
stack[sp].op = EXPR_VALUE;
|
||||
} else goto syntax_error;
|
||||
} else
|
||||
goto syntax_error;
|
||||
break;
|
||||
case EXPR_VALUE:
|
||||
/* A value is on the stack. We may reduce or evaluate depending on what the next token is */
|
||||
|
|
@ -315,18 +317,20 @@ Preprocessor_expr(DOH *s, int *error) {
|
|||
if (!token) {
|
||||
/* End of input. Might have to reduce if an operator is on stack */
|
||||
while (sp > 0) {
|
||||
if (stack[sp-1].op == EXPR_OP) {
|
||||
if (!reduce_op()) goto reduce_error;
|
||||
} else if (stack[sp-1].op == EXPR_GROUP) {
|
||||
if (stack[sp - 1].op == EXPR_OP) {
|
||||
if (!reduce_op())
|
||||
goto reduce_error;
|
||||
} else if (stack[sp - 1].op == EXPR_GROUP) {
|
||||
errmsg = "Missing \')\'";
|
||||
*error = 1;
|
||||
return 0;
|
||||
} else goto syntax_error;
|
||||
} else
|
||||
goto syntax_error;
|
||||
}
|
||||
return stack[sp].value;
|
||||
}
|
||||
/* Token must be an operator */
|
||||
switch(token) {
|
||||
switch (token) {
|
||||
case SWIG_TOKEN_STAR:
|
||||
case SWIG_TOKEN_EQUALTO:
|
||||
case SWIG_TOKEN_NOTEQUAL:
|
||||
|
|
@ -345,7 +349,7 @@ Preprocessor_expr(DOH *s, int *error) {
|
|||
case SWIG_TOKEN_PERCENT:
|
||||
case SWIG_TOKEN_LSHIFT:
|
||||
case SWIG_TOKEN_RSHIFT:
|
||||
if ((sp == 0) || (stack[sp-1].op == EXPR_GROUP)) {
|
||||
if ((sp == 0) || (stack[sp - 1].op == EXPR_GROUP)) {
|
||||
/* No possibility of reduce. Push operator and expression */
|
||||
sp++;
|
||||
stack[sp].op = EXPR_OP;
|
||||
|
|
@ -354,15 +358,17 @@ Preprocessor_expr(DOH *s, int *error) {
|
|||
stack[sp].op = EXPR_TOP;
|
||||
stack[sp].value = 0;
|
||||
} else {
|
||||
if (stack[sp-1].op != EXPR_OP) goto syntax_error_expected_operator;
|
||||
op = stack[sp-1].value; /* Previous operator */
|
||||
if (stack[sp - 1].op != EXPR_OP)
|
||||
goto syntax_error_expected_operator;
|
||||
op = stack[sp - 1].value; /* Previous operator */
|
||||
|
||||
/* Now, depending on the precedence relationship between the last operator and the current
|
||||
we will reduce or push */
|
||||
|
||||
if (prec[op] <= prec[token]) {
|
||||
/* Reduce the previous operator */
|
||||
if (!reduce_op()) goto reduce_error;
|
||||
if (!reduce_op())
|
||||
goto reduce_error;
|
||||
}
|
||||
sp++;
|
||||
stack[sp].op = EXPR_OP;
|
||||
|
|
@ -373,15 +379,18 @@ Preprocessor_expr(DOH *s, int *error) {
|
|||
}
|
||||
break;
|
||||
case SWIG_TOKEN_RPAREN:
|
||||
if (sp == 0) goto extra_rparen;
|
||||
if (sp == 0)
|
||||
goto extra_rparen;
|
||||
|
||||
/* Might have to reduce operators first */
|
||||
while ((sp > 0) && (stack[sp-1].op == EXPR_OP)) {
|
||||
if (!reduce_op()) goto reduce_error;
|
||||
while ((sp > 0) && (stack[sp - 1].op == EXPR_OP)) {
|
||||
if (!reduce_op())
|
||||
goto reduce_error;
|
||||
}
|
||||
if ((sp == 0) || (stack[sp-1].op != EXPR_GROUP)) goto extra_rparen;
|
||||
stack[sp-1].op = EXPR_VALUE;
|
||||
stack[sp-1].value = stack[sp].value;
|
||||
if ((sp == 0) || (stack[sp - 1].op != EXPR_GROUP))
|
||||
goto extra_rparen;
|
||||
stack[sp - 1].op = EXPR_VALUE;
|
||||
stack[sp - 1].value = stack[sp].value;
|
||||
sp--;
|
||||
break;
|
||||
default:
|
||||
|
|
@ -391,27 +400,27 @@ Preprocessor_expr(DOH *s, int *error) {
|
|||
break;
|
||||
|
||||
default:
|
||||
fprintf(stderr,"Internal error in expression evaluator.\n");
|
||||
fprintf(stderr, "Internal error in expression evaluator.\n");
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
syntax_error:
|
||||
syntax_error:
|
||||
errmsg = "Syntax error";
|
||||
*error = 1;
|
||||
return 0;
|
||||
|
||||
syntax_error_expected_operator:
|
||||
syntax_error_expected_operator:
|
||||
errmsg = "Syntax error: expected operator";
|
||||
*error = 1;
|
||||
return 0;
|
||||
|
||||
reduce_error:
|
||||
reduce_error:
|
||||
/* errmsg has been set by reduce_op */
|
||||
*error = 1;
|
||||
return 0;
|
||||
|
||||
extra_rparen:
|
||||
extra_rparen:
|
||||
errmsg = "Extra \')\'";
|
||||
*error = 1;
|
||||
return 0;
|
||||
|
|
@ -423,14 +432,6 @@ Preprocessor_expr(DOH *s, int *error) {
|
|||
* Return error message set by the evaluator (if any)
|
||||
* ----------------------------------------------------------------------------- */
|
||||
|
||||
char *
|
||||
Preprocessor_expr_error() {
|
||||
char *Preprocessor_expr_error() {
|
||||
return errmsg;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -17,27 +17,22 @@
|
|||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
extern int Preprocessor_expr(String *s, int *error);
|
||||
extern char *Preprocessor_expr_error(void);
|
||||
extern Hash *Preprocessor_define(const String_or_char *str, int swigmacro);
|
||||
extern void Preprocessor_undef(const String_or_char *name);
|
||||
extern void Preprocessor_init(void);
|
||||
extern void Preprocessor_delete(void);
|
||||
extern String *Preprocessor_parse(String *s);
|
||||
extern void Preprocessor_include_all(int);
|
||||
extern void Preprocessor_import_all(int);
|
||||
extern void Preprocessor_ignore_missing(int);
|
||||
extern void Preprocessor_error_as_warning(int);
|
||||
extern List *Preprocessor_depend(void);
|
||||
extern void Preprocessor_expr_init(void);
|
||||
extern void Preprocessor_expr_delete(void);
|
||||
extern int Preprocessor_expr(String *s, int *error);
|
||||
extern char *Preprocessor_expr_error(void);
|
||||
extern Hash *Preprocessor_define(const String_or_char *str, int swigmacro);
|
||||
extern void Preprocessor_undef(const String_or_char *name);
|
||||
extern void Preprocessor_init(void);
|
||||
extern void Preprocessor_delete(void);
|
||||
extern String *Preprocessor_parse(String *s);
|
||||
extern void Preprocessor_include_all(int);
|
||||
extern void Preprocessor_import_all(int);
|
||||
extern void Preprocessor_ignore_missing(int);
|
||||
extern void Preprocessor_error_as_warning(int);
|
||||
extern List *Preprocessor_depend(void);
|
||||
extern void Preprocessor_expr_init(void);
|
||||
extern void Preprocessor_expr_delete(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue