summaryrefslogtreecommitdiffstats
path: root/parse.h
diff options
context:
space:
mode:
authorfche <fche>2005-03-02 01:28:50 +0000
committerfche <fche>2005-03-02 01:28:50 +0000
commit56099f083d7a68722ace316be4d288d21caabaee (patch)
tree3e67ec78134a358c1f90f701c165c4c577d62177 /parse.h
parent2f1a1aead38c1dcd329a694dd8d3290b37320466 (diff)
downloadsystemtap-steved-56099f083d7a68722ace316be4d288d21caabaee.tar.gz
systemtap-steved-56099f083d7a68722ace316be4d288d21caabaee.tar.xz
systemtap-steved-56099f083d7a68722ace316be4d288d21caabaee.zip
* some semantic analysis
2005-03-01 Frank Ch. Eigler <fche@redhat.com> * 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.
Diffstat (limited to 'parse.h')
-rw-r--r--parse.h8
1 files changed, 7 insertions, 1 deletions
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<vardecl*>&);
+ 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 ();
};