Beispiel #1
0
 public CatAstNode(PegAstNode node)
 {
     if (node.GetLabel() != null)
         mLabel = (AstLabel)node.GetLabel();
     else
         mLabel = AstLabel.AstRoot;
     
     msText = node.ToString();
 }
Beispiel #2
0
 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);
     }
 }