// 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); }
public BlockArgumentsPTN(BELLocation loc, BlockPTN block, QualifiedBlockArgumentsPTN qualifiedBlocks) : base(loc) { Block = block; QualifiedBlocks = qualifiedBlocks; }
public QualifiedBlockPTN(BELLocation loc, string identifier, BlockPTN block) : base(loc) { Identifier = identifier; Block = block; }
public BlockArgumentsPTN(BlockPTN block, QualifiedBlockArgumentsPTN qualifiedBlocks) : base() { Block = block; QualifiedBlocks = qualifiedBlocks; }
public QualifiedBlockPTN(string identifier, BlockPTN block) { Identifier = identifier; Block = block; }