示例#1
0
 void Parse_RangeOpt(Context& ctx)
 {
     if (ctx.Token() == TKRangeSeparator)
     {
         //RangeOpt => RangeSeparator LiteralChar 
         ctx.Match(TKRangeSeparator);
         ctx.Match(TKLiteralChar);
         ctx.Action_PrintRange();
     }
     else if (ctx.Token() == TKKeywordAny ||
         ctx.Token() == TKPlusCharacter ||
         ctx.Token() == TKLiteralChar ||
         ctx.Token() == TKIdentifier ||
         ctx.Token() == TKSemicolonCharacter ||
         ctx.Token() == TKQuestionMarkCharacter ||
         ctx.Token() == TKAsteriskCharacter ||
         ctx.Token() == TKVerticalLineCharacter ||
         ctx.Token() == TKLeftParenthesisCharacter ||
         ctx.Token() == TKRightParenthesisCharacter ||
         ctx.Token() == TKStringLiteral)
     {
         //RangeOpt => Epsilon 
     }
     else
     {
         assert(false);
     }
 }
示例#2
0
void Parse_RangeOpt(Context& ctx)
{
    if (ctx.Token() == TKRangeSeparator)
    {
        //RangeOpt => RangeSeparator LiteralChar
        ctx.Match(TKRangeSeparator);
        ctx.Match(TKLiteralChar);
        ctx.Action_PrintRange();
    }
    else if (ctx.Token() == TKKeywordAny ||
             ctx.Token() == TKPlusCharacter ||
             ctx.Token() == TKLiteralChar ||
             ctx.Token() == TKIdentifier ||
             ctx.Token() == TKSemicolonCharacter ||
             ctx.Token() == TKLeftParenthesisCharacter ||
             ctx.Token() == TKQuestionMarkCharacter ||
             ctx.Token() == TKAsteriskCharacter ||
             ctx.Token() == TKVerticalLineCharacter ||
             ctx.Token() == TKRightParenthesisCharacter ||
             ctx.Token() == TKStringLiteral)
    {
        //RangeOpt => Epsilon
    }
    else
    {
        throw ParserException(ctx.GetLine(), ctx.GetCol(), ErrorCodeUnexpectedToken);
    }
}