File indexing completed on 2024-04-28 04:36:07
0001 // THIS FILE IS GENERATED 0002 // WARNING! All changes made in this file will be lost! 0003 0004 #ifndef FACT_AST_H_INCLUDED 0005 #define FACT_AST_H_INCLUDED 0006 0007 #include <QList> 0008 #include <kdev-pg-list.h> 0009 0010 0011 0012 #include <QString> 0013 0014 namespace fact 0015 { 0016 class Lexer; 0017 } 0018 0019 0020 namespace fact 0021 { 0022 0023 struct AssignmentStatementAst; 0024 struct BlockStatementAst; 0025 struct BodyAst; 0026 struct ConditionAst; 0027 struct DeclarationAst; 0028 struct ExpressionAst; 0029 struct FunctionDefinitionAst; 0030 struct IfStatementAst; 0031 struct MultExpressionAst; 0032 struct PrimaryAst; 0033 struct ProgramAst; 0034 struct ReturnStatementAst; 0035 struct StatementAst; 0036 struct VariableAst; 0037 0038 0039 struct AstNode 0040 { 0041 enum AstNodeKind 0042 { 0043 AssignmentStatementKind = 1000, 0044 BlockStatementKind = 1001, 0045 BodyKind = 1002, 0046 ConditionKind = 1003, 0047 DeclarationKind = 1004, 0048 ExpressionKind = 1005, 0049 FunctionDefinitionKind = 1006, 0050 IfStatementKind = 1007, 0051 MultExpressionKind = 1008, 0052 PrimaryKind = 1009, 0053 ProgramKind = 1010, 0054 ReturnStatementKind = 1011, 0055 StatementKind = 1012, 0056 VariableKind = 1013, 0057 AST_NODE_KIND_COUNT 0058 }; 0059 0060 int kind; 0061 qint64 startToken; 0062 qint64 endToken; 0063 }; 0064 0065 struct AssignmentStatementAst: public AstNode 0066 { 0067 enum { KIND = AssignmentStatementKind }; 0068 0069 qint64 id; 0070 ExpressionAst *expr; 0071 }; 0072 0073 struct BlockStatementAst: public AstNode 0074 { 0075 enum { KIND = BlockStatementKind }; 0076 0077 const KDevPG::ListNode<StatementAst *> *stmtSequence; 0078 }; 0079 0080 struct BodyAst: public AstNode 0081 { 0082 enum { KIND = BodyKind }; 0083 0084 const KDevPG::ListNode<DeclarationAst *> *declSequence; 0085 const KDevPG::ListNode<StatementAst *> *stmtSequence; 0086 }; 0087 0088 struct ConditionAst: public AstNode 0089 { 0090 enum { KIND = ConditionKind }; 0091 0092 ExpressionAst *leftExpr; 0093 ExpressionAst *rightExpr; 0094 }; 0095 0096 struct DeclarationAst: public AstNode 0097 { 0098 enum { KIND = DeclarationKind }; 0099 0100 VariableAst *var; 0101 }; 0102 0103 struct ExpressionAst: public AstNode 0104 { 0105 enum { KIND = ExpressionKind }; 0106 0107 MultExpressionAst *leftExpr; 0108 MultExpressionAst *rightExpr; 0109 }; 0110 0111 struct FunctionDefinitionAst: public AstNode 0112 { 0113 enum { KIND = FunctionDefinitionKind }; 0114 0115 qint64 id; 0116 const KDevPG::ListNode<qint64 > *paramSequence; 0117 BodyAst *body; 0118 }; 0119 0120 struct IfStatementAst: public AstNode 0121 { 0122 enum { KIND = IfStatementKind }; 0123 0124 ConditionAst *cond; 0125 StatementAst *ifStmt; 0126 StatementAst *elseStmt; 0127 }; 0128 0129 struct MultExpressionAst: public AstNode 0130 { 0131 enum { KIND = MultExpressionKind }; 0132 0133 PrimaryAst *leftExpr; 0134 PrimaryAst *rightExpr; 0135 }; 0136 0137 struct PrimaryAst: public AstNode 0138 { 0139 enum { KIND = PrimaryKind }; 0140 0141 qint64 num; 0142 qint64 id; 0143 const KDevPG::ListNode<ExpressionAst *> *argumentSequence; 0144 }; 0145 0146 struct ProgramAst: public AstNode 0147 { 0148 enum { KIND = ProgramKind }; 0149 0150 const KDevPG::ListNode<FunctionDefinitionAst *> *funSequence; 0151 }; 0152 0153 struct ReturnStatementAst: public AstNode 0154 { 0155 enum { KIND = ReturnStatementKind }; 0156 0157 ExpressionAst *expr; 0158 }; 0159 0160 struct StatementAst: public AstNode 0161 { 0162 enum { KIND = StatementKind }; 0163 0164 AssignmentStatementAst *assignStmt; 0165 IfStatementAst *ifStmt; 0166 BlockStatementAst *blockStmt; 0167 ReturnStatementAst *returnStmt; 0168 }; 0169 0170 struct VariableAst: public AstNode 0171 { 0172 enum { KIND = VariableKind }; 0173 0174 qint64 id; 0175 }; 0176 0177 0178 0179 } // end of namespace fact 0180 0181 #endif 0182