splitted generator
[ozulis.git] / src / ast / generator.hh
blob3cf0f4cc0f6d30f9b492050696bb50d06df5decf
1 #ifndef GENERATOR_HH
2 # define GENERATOR_HH
4 # include <string>
5 # include <vector>
7 namespace ast
9 namespace generator
11 struct Attribute
13 const std::string type;
14 const std::string name;
17 struct Node
19 const std::string name;
20 const std::string parent;
21 const Attribute attrs[100];
24 extern const Node nodes[];
26 bool isNode(const std::string & type);
27 bool isVectorOfNode(const std::string & type);
28 const Node * findNodeByName(const std::string & name);
29 std::vector<const Attribute *> allAttributes(const Node * node);
30 void appendGeneratedWarning(std::ostream & out);
32 void generateAstHeader(const char * working_directory);
33 void generateAstSource(const char * working_directory);
34 void generateVisitorHeader(const char * working_directory);
35 void generateDefaultVisitorHeader(const char * working_directory);
36 void generateDefaultVisitorSource(const char * working_directory);
37 void generateBrowseVisitorHeader(const char * working_directory);
38 void generateBrowseVisitorSource(const char * working_directory);
39 void generateAsciiVisitorHeader(const char * working_directory);
40 void generateAsciiVisitorSource(const char * working_directory);
44 extern template class std::vector<ast::generator::Attribute *>;
46 #endif /* !GENERATOR_HH */