コード例 #1
0
ファイル: BehaviorParser.cs プロジェクト: nuxleus/flexwiki
		// blockLiteral := '{'  [blockParameters] expr'}'
		BlockPTN BlockLiteral()
		{
			Token next = Scanner.Next();
			if (next.Type != TokenType.TokenLeftBrace)
			{
				Scanner.Pushback(next);
				return null;
			}

			string ex = "expression, block parameters or right brace";
			BlockPTN answer = new BlockPTN(LocationFromToken(next));

			next = Scanner.Next();
			if (next.Type == TokenType.TokenRightBrace)
			{
				return answer;
			}
			Scanner.Pushback(next);

			BlockParametersPTN parms = BlockParameters();
			answer.Parameters = parms;

			ExposableParseTreeNode arg = ExpressionChain();
			if (arg == null)
			{
				Expected(ex);
				return null;
			}

			answer.ParseTree = arg;

			next = Scanner.Next();
			if (next.Type == TokenType.TokenRightBrace)
				return answer;
			throw new ExpectedTokenParseException(LocationFromToken(next), "right brace '}'", next);
		}
コード例 #2
0
 public BlockArgumentsPTN(BELLocation loc, BlockPTN block, QualifiedBlockArgumentsPTN qualifiedBlocks)
     : base(loc)
 {
     Block = block;
     QualifiedBlocks = qualifiedBlocks;
 }
コード例 #3
0
 public QualifiedBlockPTN(BELLocation loc, string identifier, BlockPTN block)
     : base(loc)
 {
     Identifier = identifier;
     Block = block;
 }
コード例 #4
0
ファイル: BlockArgumentsPTN.cs プロジェクト: nuxleus/flexwiki
		public BlockArgumentsPTN(BlockPTN block, QualifiedBlockArgumentsPTN qualifiedBlocks) : base()
		{
			Block = block;
			QualifiedBlocks = qualifiedBlocks;
		}
コード例 #5
0
ファイル: QualifiedBlockPTN.cs プロジェクト: nuxleus/flexwiki
		public QualifiedBlockPTN(string identifier, BlockPTN block)
		{
			Identifier = identifier;
			Block = block;
		}