diff options
Diffstat (limited to '')
| -rw-r--r-- | src/astnode.cpp | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/src/astnode.cpp b/src/astnode.cpp new file mode 100644 index 0000000..5adb3ee --- /dev/null +++ b/src/astnode.cpp | |||
| @@ -0,0 +1,113 @@ | |||
| 1 | #include "astnode.h" | ||
| 2 | #include "astleaf.h" | ||
| 3 | #include "astbranch.h" | ||
| 4 | |||
| 5 | AstNode::AstNode( Type eType ) : | ||
| 6 | eType( eType ) | ||
| 7 | { | ||
| 8 | } | ||
| 9 | |||
| 10 | AstNode::~AstNode() | ||
| 11 | { | ||
| 12 | } | ||
| 13 | |||
| 14 | Bu::Formatter &operator<<( Bu::Formatter &f, const AstNode &n ) | ||
| 15 | { | ||
| 16 | f << n.getType(); | ||
| 17 | if( n.getClass() == AstNode::typeBranch ) | ||
| 18 | { | ||
| 19 | f << *dynamic_cast<const AstBranch *>(&n); | ||
| 20 | } | ||
| 21 | else | ||
| 22 | { | ||
| 23 | f << *dynamic_cast<const AstLeaf *>(&n); | ||
| 24 | } | ||
| 25 | return f; | ||
| 26 | } | ||
| 27 | |||
| 28 | Bu::Formatter &operator<<( Bu::Formatter &f, const AstNode::Type &t ) | ||
| 29 | { | ||
| 30 | switch( t ) | ||
| 31 | { | ||
| 32 | case AstNode::typeFunction: f << "Function"; break; | ||
| 33 | case AstNode::typeSet: f << "Set"; break; | ||
| 34 | case AstNode::typeUnset: f << "Unset"; break; | ||
| 35 | case AstNode::typeIf: f << "If"; break; | ||
| 36 | case AstNode::typeInclude: f << "Include"; break; | ||
| 37 | case AstNode::typeTarget: f << "Target"; break; | ||
| 38 | case AstNode::typeRule: f << "Rule"; break; | ||
| 39 | case AstNode::typeConfig: f << "Config"; break; | ||
| 40 | case AstNode::typeList: f << "List"; break; | ||
| 41 | case AstNode::typeInlineFunc: f << "InlineFunc"; break; | ||
| 42 | case AstNode::typeRequires: f << "Requires"; break; | ||
| 43 | case AstNode::typeFor: f << "For"; break; | ||
| 44 | case AstNode::typeFunctionDef: f << "FunctionDef"; break; | ||
| 45 | case AstNode::typeReturn: f << "Return"; break; | ||
| 46 | case AstNode::typeProfile: f << "Profile"; break; | ||
| 47 | case AstNode::typeInput: f << "Input"; break; | ||
| 48 | case AstNode::typeRuleDef: f << "RuleDef"; break; | ||
| 49 | case AstNode::typeOutput: f << "Output"; break; | ||
| 50 | case AstNode::typeAutoConfig: f << "AutoConfig"; break; | ||
| 51 | case AstNode::typeGlobalConfig: f << "GlobalConfig"; break; | ||
| 52 | case AstNode::typeType: f << "Type"; break; | ||
| 53 | case AstNode::typeValue: f << "Value"; break; | ||
| 54 | case AstNode::typeAllow: f << "Allow"; break; | ||
| 55 | case AstNode::typeDefault: f << "Default"; break; | ||
| 56 | case AstNode::typeExport: f << "Export"; break; | ||
| 57 | case AstNode::typeExpr: f << "Expr"; break; | ||
| 58 | case AstNode::typeActionDef: f << "ActionDef"; break; | ||
| 59 | case AstNode::typeProcessTarget:f << "ProcessTarget"; break; | ||
| 60 | case AstNode::typeTag: f << "Tag"; break; | ||
| 61 | |||
| 62 | case AstNode::typeVariable: f << "Variable"; break; | ||
| 63 | case AstNode::typeString: f << "String"; break; | ||
| 64 | case AstNode::typeInt: f << "Int"; break; | ||
| 65 | case AstNode::typeFloat: f << "Float"; break; | ||
| 66 | case AstNode::typeBool: f << "Bool"; break; | ||
| 67 | case AstNode::typeVersion: f << "Version"; break; | ||
| 68 | case AstNode::typeOpEq: f << "Operator ="; break; | ||
| 69 | case AstNode::typeOpPlusEq: f << "Operator +="; break; | ||
| 70 | case AstNode::typeOpPlusEqRaw: f << "Operator <<"; break; | ||
| 71 | case AstNode::typeError: f << "Error"; break; | ||
| 72 | case AstNode::typeWarning: f << "Warning"; break; | ||
| 73 | case AstNode::typeNotice: f << "Notice"; break; | ||
| 74 | case AstNode::typeTypeString: f << "Type String"; break; | ||
| 75 | case AstNode::typeTypeInt: f << "Type Int"; break; | ||
| 76 | case AstNode::typeTypeFloat: f << "Type Float"; break; | ||
| 77 | case AstNode::typeTypeBool: f << "Type Bool"; break; | ||
| 78 | case AstNode::typeTypeVersion: f << "Type Version"; break; | ||
| 79 | case AstNode::typeCmpEq: f << "Compare ="; break; | ||
| 80 | case AstNode::typeCmpLt: f << "Compare <"; break; | ||
| 81 | case AstNode::typeCmpGt: f << "Compare >"; break; | ||
| 82 | case AstNode::typeCmpNe: f << "Compare !="; break; | ||
| 83 | case AstNode::typeCmpLtEq: f << "Compare <="; break; | ||
| 84 | case AstNode::typeCmpGtEq: f << "Compare >="; break; | ||
| 85 | case AstNode::typeCondition: f << "Condition"; break; | ||
| 86 | case AstNode::typeDisplay: f << "Display"; break; | ||
| 87 | case AstNode::typeCache: f << "Cache"; break; | ||
| 88 | case AstNode::typePushPrefix: f << "Push Prefix"; break; | ||
| 89 | case AstNode::typePopPrefix: f << "Pop Prefix"; break; | ||
| 90 | case AstNode::typeNull: f << "Null"; break; | ||
| 91 | case AstNode::typeVariableRef: f << "VariableRef"; break; | ||
| 92 | case AstNode::typeOpPlus: f << "Operator +"; break; | ||
| 93 | case AstNode::typeOpMinus: f << "Operator -"; break; | ||
| 94 | case AstNode::typeOpMultiply: f << "Operator *"; break; | ||
| 95 | case AstNode::typeOpDivide: f << "Operator /"; break; | ||
| 96 | case AstNode::typeOpNegate: f << "Operator negate"; break; | ||
| 97 | case AstNode::typeOpNot: f << "Operator not"; break; | ||
| 98 | |||
| 99 | case AstNode::typeBranch: f << "Branch"; break; | ||
| 100 | case AstNode::typeLeaf: f << "Leaf"; break; | ||
| 101 | case AstNode::typeClassMask: f << "ClassMask"; break; | ||
| 102 | |||
| 103 | case AstNode::typeDataNone: f << "<Data None>"; break; | ||
| 104 | case AstNode::typeDataString: f << "<Data String>"; break; | ||
| 105 | case AstNode::typeDataInt: f << "<Data Int>"; break; | ||
| 106 | case AstNode::typeDataFloat: f << "<Data Float>"; break; | ||
| 107 | case AstNode::typeDataBool: f << "<Data Bool>"; break; | ||
| 108 | case AstNode::typeDataVersion: f << "<Data Version>"; break; | ||
| 109 | case AstNode::typeDataMask: f << "<Data Mask>"; break; | ||
| 110 | } | ||
| 111 | return f; | ||
| 112 | } | ||
| 113 | |||
