public FunctionNode(Node name,Node paraNode,Node func) : base() { this.name = (SymbolNode)name; this.paraNode = (ParametersNode)paraNode; this.func = (BlockNode)func; this.paraNode.SetBlock(this.func); }
public Parser() { //グローバルなブロック。 //グローバル変数等を格納する。 Block = new BlockNode(); Block.Set("true",new TrueNode()); Block.Set("false",new FalseNode()); Block.Set("system",new SystemNode()); }
public ElseNode(BlockNode block) { FalseBlock = block; }
//ブロックを処理する。 private Node ParseBlock() { //新しいブロックを今いるブロックの下に作る。 BlockNode innerBlockNode = new BlockNode(Block); //今いるブロックを新しいブロックに。 Block = innerBlockNode; //閉じ括弧がくるまで、文をブロックに入れる。 while(tokenType != TokenType.CloseBrace){ Node n = ParseStatement(); if(n==null){ break; } innerBlockNode.Add(n); } if(tokenType != TokenType.CloseBrace){ throw new UnexpectedException(tokenType,"CloseBrase(})"); } GetToken(); //中のブロックから、もともといたブロックに出る。 Block = innerBlockNode.UpperBlock; return innerBlockNode; }
//ブロックノードの下のブロックノード public BlockNode(BlockNode upper) { UpperBlock = upper; ChildNodes = new ArrayList(); Name = new Dictionary<string,Node>(); }
//一番上のブロックノード public BlockNode() { UpperBlock = null; ChildNodes = new ArrayList(); Name = new Dictionary<string,Node>(); }