1 //////////////////////////////////////////////////////////////////////////////
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
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
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)
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
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
58 int the_production_number
;
60 AGNonTerminal(int production_no
, AGParseTree
*, AGParseTree
*);
61 virtual ~AGNonTerminal();
63 virtual void print_tree (ostream
&) const;