initial
[prop.git] / include / AD / ag / parsenodes.h
blobbebc2ae0803a0579772b4dd1a38d1a360ee38abd
1 //////////////////////////////////////////////////////////////////////////////
2 // NOTICE:
3 //
4 // ADLib, Prop and their related set of tools and documentation are in the
5 // public domain. The author(s) of this software reserve no copyrights on
6 // the source code and any code generated using the tools. You are encouraged
7 // to use ADLib and Prop to develop software, in both academic and commercial
8 // settings, and are welcomed to incorporate any part of ADLib and Prop into
9 // your programs.
11 // Although you are under no obligation to do so, we strongly recommend that
12 // you give away all software developed using our tools.
14 // We also ask that credit be given to us when ADLib and/or Prop are used in
15 // your programs, and that this notice be preserved intact in all the source
16 // code.
18 // This software is still under development and we welcome(read crave for)
19 // any suggestions and help from the users.
21 // Allen Leung (leunga@cs.nyu.edu)
22 // 1994-1997
23 //////////////////////////////////////////////////////////////////////////////
25 #ifndef attribute_grammar_parse_tree_nodes_h
26 #define attribute_grammar_parse_tree_nodes_h
28 #include <AD/ag/parsetree.h>
30 //////////////////////////////////////////////////////////////////////////////
32 // Terminal node of a parse tree.
34 //////////////////////////////////////////////////////////////////////////////
35 class AGTerminal : public AGParseTree
36 { AGTerminal(); // no default constructor
37 AGTerminal(const AGTerminal&); // no copy constructor
38 void operator = (const AGTerminal&); // no assignment
39 protected:
40 const char * the_id;
41 public:
42 AGTerminal(const char * id, AGParseTree *, AGParseTree *);
43 virtual ~AGTerminal();
45 virtual void print_tree (ostream&) const;
48 //////////////////////////////////////////////////////////////////////////////
50 // Non-Terminal node of a parse tree.
52 //////////////////////////////////////////////////////////////////////////////
53 class AGNonterminal : public AGParseTree
54 { AGNonTerminal(); // no default constructor
55 AGNonTerminal(const AGNonTerminal&); // no copy constructor
56 void operator = (const AGNonTerminal&); // no assignment
57 protected:
58 int the_production_number;
59 public:
60 AGNonTerminal(int production_no, AGParseTree *, AGParseTree *);
61 virtual ~AGNonTerminal();
63 virtual void print_tree (ostream&) const;
66 #endif