cppexp.c (lex): Update to use state.skip_eval.
authorNeil Booth <neil@daikokuya.demon.co.uk>
Sun, 28 Apr 2002 19:42:54 +0000 (19:42 +0000)
committerNeil Booth <neil@gcc.gnu.org>
Sun, 28 Apr 2002 19:42:54 +0000 (19:42 +0000)
commit87ed109f1f7fab7afc05afca460523a2493c0f43
treec4adc85edfa9fa27de90af625624219e92a87257
parent14dbfa70082438ba474626d210d4f151354e10d0
cppexp.c (lex): Update to use state.skip_eval.

* cppexp.c (lex): Update to use state.skip_eval.
(struct op): Remove prio and flags members.
(FLAG_BITS, FLAG_MASK, PRIO_SHIFT, EXTRACT_PRIO, EXTRACT_FLAGS,
SHORT_CIRCUIT, RIGHT_ASSOC, ..._PRIO, op_to_prio): Remove.
(LEFT_ASSOC): New macro.
(optab): New table of operator priorities and flags.
(SHIFT): Update.
(_cpp_parse_expr): Clean up logic.  Return bool.  Use a
malloc-ed parser stack.
(reduce): New; reduce the operator stack.
(_cpp_expand_op_stack): Expand the operator stack as necessary.
* cpphash.h (struct op): Predeclare.
(struct cpp_reader): New members op_stack, op_limit.
(struct lexer_state): New member skip_eval.
(_cpp_parse_expr): Update.
(_cpp_expand_op_stack): New.
* cpplib.c (do_if): Update.
* cppinit.c (cpp_create_reader): Create op stack.
(cpp_destroy): And destroy it.
* cpplib.h (CPP_LAST_CPP_OP): Correct.
(TTYPE_TABLE): Correct.
testsuite:
* gcc.dg/cpp/if-mop.c: Update.
* gcc.dg/cpp/if-mpar.c: Add test.
* gcc.dg/cpp/if-oppr.c: Update.

From-SVN: r52853
gcc/ChangeLog
gcc/cppexp.c
gcc/cpphash.h
gcc/cppinit.c
gcc/cpplib.c
gcc/cpplib.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/cpp/if-mop.c
gcc/testsuite/gcc.dg/cpp/if-mpar.c
gcc/testsuite/gcc.dg/cpp/if-oppr.c