本文整理汇总了C#中Parser.ParseStatement方法的典型用法代码示例。如果您正苦于以下问题:C# Parser.ParseStatement方法的具体用法?C# Parser.ParseStatement怎么用?C# Parser.ParseStatement使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Parser
的用法示例。
在下文中一共展示了Parser.ParseStatement方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Parse
public Expression Parse(Parser parser, Token token, out bool trailingSemicolon)
{
trailingSemicolon = false;
parser.Take(TokenType.LeftParen);
Expression initializer = null;
if (!parser.Match(TokenType.Semicolon))
initializer = parser.ParseStatement(false);
if (initializer is IBlockStatementExpression)
throw new MondCompilerException(token.FileName, token.Line, "For loop initializer can not be block statement");
parser.Take(TokenType.Semicolon);
Expression condition = null;
if (!parser.Match(TokenType.Semicolon))
condition = parser.ParseExpession();
parser.Take(TokenType.Semicolon);
BlockExpression increment = null;
if (!parser.Match(TokenType.RightParen))
{
var statements = new List<Expression>();
do
{
statements.Add(parser.ParseStatement(false));
if (!parser.Match(TokenType.Comma))
break;
parser.Take(TokenType.Comma);
} while (true);
increment = new BlockExpression(token, statements);
}
parser.Take(TokenType.RightParen);
var block = new ScopeExpression(parser.ParseBlock());
return new ForExpression(token, initializer, condition, increment, block);
}
示例2: ParseBlock
private static BlockExpression ParseBlock(Parser parser)
{
var statements = new List<Expression>();
while (!parser.Match(TokenType.Case) &&
!parser.Match(TokenType.Default) &&
!parser.Match(TokenType.RightBrace))
{
statements.Add(parser.ParseStatement());
}
return new ScopeExpression(statements);
}
示例3: Parse
public Expression Parse(Parser parser, Token token, out bool trailingSemicolon)
{
trailingSemicolon = false;
var statements = new List<Expression>();
while (!parser.Match(TokenType.RightBrace))
{
statements.Add(parser.ParseStatement());
}
parser.Take(TokenType.RightBrace);
return new ScopeExpression(statements);
}