public static bool TryParseNode(IParser parser, out PauseStatement node) { node = null; bool result = false; if (parser.PeekToken(TokenKind.PauseKeyword)) { result = true; node = new PauseStatement(); parser.NextToken(); node.StartIndex = parser.Token.Span.Start; if (parser.PeekToken(TokenCategory.StringLiteral)) { parser.NextToken(); } node.EndIndex = parser.Token.Span.End; } return(result); }
private static bool TryGetReportStatement(IParser parser, out FglStatement node, ReportBlockNode reportNode, bool returnFalseInsteadOfErrors = false) { bool result = false; node = null; switch (parser.PeekToken().Kind) { case TokenKind.PrintKeyword: { PrintStatement prtStmt; if ((result = PrintStatement.TryParseNode(parser, out prtStmt, reportNode))) { node = prtStmt; } break; } case TokenKind.PrintxKeyword: { PrintxStatement prtxStmt; if ((result = PrintxStatement.TryParseNode(parser, out prtxStmt))) { node = prtxStmt; } break; } case TokenKind.NeedKeyword: { NeedStatement needStmt; if ((result = NeedStatement.TryParseNode(parser, out needStmt))) { node = needStmt; } break; } case TokenKind.PauseKeyword: { PauseStatement pauseStmt; if ((result = PauseStatement.TryParseNode(parser, out pauseStmt))) { node = pauseStmt; } break; } case TokenKind.SkipKeyword: { SkipStatement skipStmt; if ((result = SkipStatement.TryParseNode(parser, out skipStmt))) { node = skipStmt; } break; } default: result = false; break; } return(result); }