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. --- parsetest.cxx | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 parsetest.cxx (limited to 'parsetest.cxx') diff --git a/parsetest.cxx b/parsetest.cxx new file mode 100644 index 00000000..ab1d53c8 --- /dev/null +++ b/parsetest.cxx @@ -0,0 +1,40 @@ +// toy driver +// Copyright 2005 Red Hat Inc. +// GPL + + +#include "staptree.h" +#include "parse.h" +#include + + +int main (int argc, char *argv []) +{ + int rc = 0; + + if (argc > 1) + { + // quietly parse all listed input files + for (int i = 1; i < argc; i ++) + { + parser p (argv[i]); + stapfile* f = p.parse (); + if (f) + cout << "file '" << argv[i] << "' parsed ok." << endl; + else + rc = 1; + } + } + else + { + // parse then print just stdin + parser p (cin); + stapfile* f = p.parse (); + if (f) + f->print (cout); + else + rc = 1; + } + + return rc; +} -- cgit