diff --git a/Source/cmCommandArgumentParser.y b/Source/cmCommandArgumentParser.y index dc1b9ee65..edcb19092 100644 --- a/Source/cmCommandArgumentParser.y +++ b/Source/cmCommandArgumentParser.y @@ -49,7 +49,8 @@ YY_DECL; static void cmCommandArgumentError(yyscan_t yyscanner, const char* message); #define YYDEBUG 1 -#define YYMAXDEPTH 10000000 +//#define YYMAXDEPTH 100000 +//#define YYINITDEPTH 10000 #define calCheckEmpty(cnt) yyGetParser->CheckEmpty(__LINE__, cnt, yyvsp); @@ -81,6 +82,7 @@ static void cmCommandArgumentError(yyscan_t yyscanner, const char* message); %token cal_LCURLY %token cal_RCURLY %token cal_NAME +%token cal_BSLASH %token cal_SYMBOL %token cal_AT %token cal_ERROR @@ -92,7 +94,7 @@ static void cmCommandArgumentError(yyscan_t yyscanner, const char* message); Start: -Goal +GoalWithOptionalBackSlash { calElementStart(1); calCheckEmpty(1); @@ -100,6 +102,21 @@ Goal yyGetParser->SetResult($1); } +GoalWithOptionalBackSlash: +Goal +{ + calElementStart(1); + calCheckEmpty(1); + $$ = $1; +} +| +Goal cal_BSLASH +{ + calElementStart(2); + calCheckEmpty(2); + $$ = yyGetParser->CombineUnions($1, $2); +} + Goal: { calElementStart(0); @@ -115,7 +132,7 @@ String Goal } String: -TextWithRCurly +OuterText { calElementStart(1); calCheckEmpty(1); @@ -129,35 +146,7 @@ Variable $$ = $1; } -MultipleIds: -{ - calElementStart(0); - calCheckEmpty(0); -} -| -ID MultipleIds -{ - calElementStart(2); - calCheckEmpty(2); - $$ = yyGetParser->CombineUnions($1, $2); -} - -ID: -Text -{ - calElementStart(1); - calCheckEmpty(1); - $$ = $1; -} -| -Variable -{ - calElementStart(1); - calCheckEmpty(1); - $$ = $1; -} - -Text: +OuterText: cal_NAME { calElementStart(1); @@ -165,21 +154,6 @@ cal_NAME $$ = $1; } | -cal_SYMBOL -{ - calElementStart(1); - calCheckEmpty(1); - $$ = $1; -} - -TextWithRCurly: -Text -{ - calElementStart(1); - calCheckEmpty(1); - $$ = $1; -} -| cal_AT { calElementStart(1); @@ -207,6 +181,13 @@ cal_RCURLY calCheckEmpty(1); $$ = $1; } +| +cal_SYMBOL +{ + calElementStart(1); + calCheckEmpty(1); + $$ = $1; +} Variable: cal_NCURLY MultipleIds cal_RCURLY @@ -232,6 +213,35 @@ cal_ATNAME $$ = yyGetParser->ExpandVariable($1); } +MultipleIds: +{ + calElementStart(0); + calCheckEmpty(0); +} +| +ID MultipleIds +{ + calElementStart(2); + calCheckEmpty(2); + $$ = yyGetParser->CombineUnions($1, $2); +} + +ID: +cal_NAME +{ + calElementStart(1); + calCheckEmpty(1); + $$ = $1; +} +| +Variable +{ + calElementStart(1); + calCheckEmpty(1); + $$ = $1; +} + + %% /* End of grammar */