diff options
author | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-04-28 19:42:54 +0000 |
---|---|---|
committer | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-04-28 19:42:54 +0000 |
commit | 5bbf045f8148eb62a4813716c428bb68c3b6b2c5 (patch) | |
tree | c4adc85edfa9fa27de90af625624219e92a87257 /gcc/cppinit.c | |
parent | 0b14bde96c614131a18bcd151024878f18ef976e (diff) | |
download | ppe42-gcc-5bbf045f8148eb62a4813716c428bb68c3b6b2c5.tar.gz ppe42-gcc-5bbf045f8148eb62a4813716c428bb68c3b6b2c5.zip |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@52853 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cppinit.c')
-rw-r--r-- | gcc/cppinit.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/cppinit.c b/gcc/cppinit.c index c444f832fb3..c4f594234b5 100644 --- a/gcc/cppinit.c +++ b/gcc/cppinit.c @@ -535,6 +535,9 @@ cpp_create_reader (lang) pfile->a_buff = _cpp_get_buff (pfile, 0); pfile->u_buff = _cpp_get_buff (pfile, 0); + /* The expression parser stack. */ + _cpp_expand_op_stack (pfile); + /* Initialise the buffer obstack. */ gcc_obstack_init (&pfile->buffer_ob); @@ -556,6 +559,7 @@ cpp_destroy (pfile) free_chain (CPP_OPTION (pfile, pending)->include_head); free (CPP_OPTION (pfile, pending)); + free (pfile->op_stack); while (CPP_BUFFER (pfile) != NULL) _cpp_pop_buffer (pfile); |