version 1.18, 2003/11/13 19:42:21 |
version 1.19, 2003/11/17 11:20:13 |
|
|
%token SCALE IBASE OBASE AUTO |
%token SCALE IBASE OBASE AUTO |
%token CONTINUE ELSE PRINT |
%token CONTINUE ELSE PRINT |
|
|
|
%left BOOL_OR |
|
%left BOOL_AND |
|
%nonassoc BOOL_NOT |
%nonassoc EQUALS LESS_EQ GREATER_EQ UNEQUALS LESS GREATER |
%nonassoc EQUALS LESS_EQ GREATER_EQ UNEQUALS LESS GREATER |
%right <str> ASSIGN_OP |
%right <str> ASSIGN_OP |
%left PLUS MINUS |
%left PLUS MINUS |
|
|
; |
; |
|
|
relational_expression |
relational_expression |
: expression |
: expression EQUALS expression |
{ |
{ |
$$ = node($1, cs(" 0!="), END_NODE); |
|
} |
|
| expression EQUALS expression |
|
{ |
|
$$ = node($1, $3, cs("="), END_NODE); |
$$ = node($1, $3, cs("="), END_NODE); |
} |
} |
| expression UNEQUALS expression |
| expression UNEQUALS expression |
|
|
{ |
{ |
$$ = node($1, $3, cs("!>"), END_NODE); |
$$ = node($1, $3, cs("!>"), END_NODE); |
} |
} |
|
| expression |
|
{ |
|
$$ = node($1, cs(" 0!="), END_NODE); |
|
} |
; |
; |
|
|
|
|
|
|
| SCALE LPAR expression RPAR |
| SCALE LPAR expression RPAR |
{ |
{ |
$$ = node($3, cs("X"), END_NODE); |
$$ = node($3, cs("X"), END_NODE); |
|
} |
|
| BOOL_NOT expression |
|
{ |
|
$$ = node($2, cs("N"), END_NODE); |
|
} |
|
| expression BOOL_AND alloc_macro pop_nesting expression |
|
{ |
|
ssize_t n = node(cs("R"), $5, END_NODE); |
|
emit_macro($3, n); |
|
$$ = node($1, cs("d0!="), $3, END_NODE); |
|
} |
|
| expression BOOL_OR alloc_macro pop_nesting expression |
|
{ |
|
ssize_t n = node(cs("R"), $5, END_NODE); |
|
emit_macro($3, n); |
|
$$ = node($1, cs("d0="), $3, END_NODE); |
|
} |
|
| expression EQUALS expression |
|
{ |
|
$$ = node($1, $3, cs("G"), END_NODE); |
|
} |
|
| expression UNEQUALS expression |
|
{ |
|
$$ = node($1, $3, cs("GN"), END_NODE); |
|
} |
|
| expression LESS expression |
|
{ |
|
$$ = node($3, $1, cs("("), END_NODE); |
|
} |
|
| expression LESS_EQ expression |
|
{ |
|
$$ = node($3, $1, cs("{"), END_NODE); |
|
} |
|
| expression GREATER expression |
|
{ |
|
$$ = node($1, $3, cs("("), END_NODE); |
|
} |
|
| expression GREATER_EQ expression |
|
{ |
|
$$ = node($1, $3, cs("{"), END_NODE); |
} |
} |
; |
; |
|
|