public CatAstNode(PegAstNode node) { if (node.GetLabel() != null) mLabel = (AstLabel)node.GetLabel(); else mLabel = AstLabel.AstRoot; msText = node.ToString(); }
public static CatAstNode Create(PegAstNode node) { AstLabel label = (AstLabel)node.GetLabel(); switch (label) { case AstLabel.AstRoot: return new AstRoot(node); case AstLabel.Def: return new AstDef(node); case AstLabel.Name: return new AstName(node); case AstLabel.Param: return new AstParam(node); case AstLabel.Lambda: return new AstLambda(node); case AstLabel.Quote: return new AstQuote(node); case AstLabel.Char: return new AstChar(node); case AstLabel.String: return new AstString(node); case AstLabel.Float: return new AstFloat(node); case AstLabel.Int: return new AstInt(node); case AstLabel.Bin: return new AstBin(node); case AstLabel.Hex: return new AstHex(node); case AstLabel.Stack: return new AstStack(node); case AstLabel.FxnType: return new AstFxnType(node); case AstLabel.TypeVar: return new AstTypeVar(node); case AstLabel.TypeName: return new AstSimpleType(node); case AstLabel.StackVar: return new AstStackVar(node); case AstLabel.MacroRule: return new AstMacro(node); case AstLabel.MacroProp: return new AstMacro(node); case AstLabel.MacroPattern: return new AstMacroPattern(node); case AstLabel.MacroQuote: return new AstMacroQuote(node); case AstLabel.MacroTypeVar: return new AstMacroTypeVar(node); case AstLabel.MacroStackVar: return new AstMacroStackVar(node); case AstLabel.MacroName: return new AstMacroName(node); case AstLabel.MetaDataContent: return new AstMetaDataContent(node); case AstLabel.MetaDataLabel: return new AstMetaDataLabel(node); case AstLabel.MetaDataBlock: return new AstMetaDataBlock(node); default: throw new Exception("unrecognized node type in AST tree: " + label); } }