diff -r 328b794f8922 -r 0e623bbdee95 stage1_2/iec.flex --- a/stage1_2/iec.flex Sun Oct 28 20:15:54 2007 +0100 +++ b/stage1_2/iec.flex Sun Oct 28 22:03:27 2007 +0100 @@ -753,8 +753,17 @@ <> { if (--include_stack_ptr < 0) { + /* yyterminate() terminates the scanner and returns a 0 to the + * scanner's caller, indicating "all done". + * + * Our syntax parser (written with bison) has the token + * END_OF_INPUT associated to the value 0, so even though + * we don't explicitly return the token END_OF_INPUT + * calling yyterminate() is equivalent to doing that. + */ yyterminate(); - } else { + } + else { yy_delete_buffer(YY_CURRENT_BUFFER); yy_switch_to_buffer((include_stack[include_stack_ptr]).buffer_state); yylineno = include_stack[include_stack_ptr].lineno; @@ -1203,6 +1212,7 @@ * ANDN and &N)! */ /* The following tokens clash with ST expression operators and Standard Functions */ + /* They are also keywords! */ AND return AND; MOD return MOD; OR return OR; @@ -1210,6 +1220,7 @@ NOT return NOT; /* The following tokens clash with Standard Functions */ +{ ADD return ADD; DIV return DIV; EQ return EQ; @@ -1220,15 +1231,19 @@ MUL return MUL; NE return NE; SUB return SUB; +} /* The following tokens clash with SFC action qualifiers */ +{ S return S; R return R; +} /* The following tokens clash with ST expression operators */ & return AND2; /* The following tokens have no clashes */ +{ LD return LD; LDN return LDN; ST return ST; @@ -1254,7 +1269,7 @@ JMP return JMP; JMPC return JMPC; JMPCN return JMPCN; - +} /***********************/ /* B 3.1 - Expressions */