1 ///////////////////////////////////////////////////////////////////////////////
3 // This file implements the attribute grammar generator.
5 ///////////////////////////////////////////////////////////////////////////////
12 ///////////////////////////////////////////////////////////////////////////////
14 // Class to represent an attribute grammar class
16 ///////////////////////////////////////////////////////////////////////////////
17 AttributeGrammarClass::AttributeGrammarClass
18 (Id name, Inherits i, TyQual q, Decls decls)
19 : SyntaxClass(ATTRIBUTE_GRAMMAR_CLASS,name,i,q,decls)
21 AttributeGrammarClass::~AttributeGrammarClass() {}
23 ///////////////////////////////////////////////////////////////////////////////
25 // Method to generate the class interface
27 ///////////////////////////////////////////////////////////////////////////////
28 void AttributeGrammarClass::gen_class_interface(CodeGen& C)
29 { SyntaxClass::gen_class_interface(C);
32 ///////////////////////////////////////////////////////////////////////////////
34 // Method to generate the class implementation
36 ///////////////////////////////////////////////////////////////////////////////
37 void AttributeGrammarClass::gen_class_implementation
38 (CodeGen& C, Tys tys, DefKind k)
40 SyntaxClass::gen_class_implementation(C,tys,k);
43 ///////////////////////////////////////////////////////////////////////////////
45 // Constructor/destructor of the attribute grammar compiler
47 ///////////////////////////////////////////////////////////////////////////////
48 AttributeGrammarCompiler::AttributeGrammarCompiler() {}
49 AttributeGrammarCompiler::~AttributeGrammarCompiler() {}
51 ///////////////////////////////////////////////////////////////////////////////
53 // Method to generate the attribute grammar
55 ///////////////////////////////////////////////////////////////////////////////
56 void AttributeGrammarCompiler::gen_attribute_grammar(Id id, GramExp e)
57 { AttributeGrammarClass * C =
58 (AttributeGrammarClass*)
59 ClassDefinition::lookup_class(
60 ClassDefinition::ATTRIBUTE_GRAMMAR_CLASS,id);
61 if (C) C->gen_parser(*this,e);