From 56099f083d7a68722ace316be4d288d21caabaee Mon Sep 17 00:00:00 2001 From: fche Date: Wed, 2 Mar 2005 01:28:50 +0000 Subject: * some semantic analysis 2005-03-01 Frank Ch. Eigler * parse.cxx: Implement left-associativity for several types of operators. Add some more statement types. Parse functions. Be able to print tokens. Simplify error generating functions. Save tokens in all parse tree nodes. * parse.h: Corresponding changes. * staptree.cxx: Move tree-printing functions here. Add many new functions for symbol and type resolution. * staptree.h: Corresponding changes. * semtest.cxx: New semantic analysis pass & test driver. * testsuite/sem*/*: New tests. * parsetest.cxx: Separated parse test driver. * testsuite/parse*/*: Adapt tests to parsetest driver. * Makefile.am: Build semtest. Run its tests. * Makefile.in: Regenerated. * parse.cxx, parse.h: New files: parser. --- parse.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'parse.h') diff --git a/parse.h b/parse.h index 21178a3f..ddfb19c1 100644 --- a/parse.h +++ b/parse.h @@ -29,6 +29,8 @@ struct token std::string content; }; +std::ostream& operator << (std::ostream& o, const token& t); + struct parse_error: public std::runtime_error { @@ -80,10 +82,13 @@ private: // nonterminals probe* parse_probe (); probe_point_spec* parse_probe_point_spec (); literal* parse_literal (); - symbol* parse_global (); + void parse_global (vector&); + functiondecl* parse_functiondecl (); block* parse_stmt_block (); statement* parse_statement (); if_statement* parse_if_statement (); + return_statement* parse_return_statement (); + delete_statement* parse_delete_statement (); expression* parse_expression (); expression* parse_assignment (); expression* parse_ternary (); @@ -99,4 +104,5 @@ private: // nonterminals expression* parse_crement (); expression* parse_value (); expression* parse_symbol (); + symbol* parse_symbol_plain (); }; -- cgit