Make preprocessor ExpressionParser only lex what it can parse
This cleans up ExpressionParser so that the lexer only consumes one extra
token in case the parser finishes. The parser will also finish with
YYACCEPT once it has parsed a complete expression. This will make the
preprocessor to generate a more informative unexpected token error
instead of a syntax error if there are extra tokens after #if.
This will also enable reusing ExpressionParser for parsing expressions in
line directives. The format for a line directive that specifies both line
and file numbers is as follows:
#if line-expression file_expression
ExpressionParser will need to be run twice for each line: first to parse
line-expression and then to parse file-expression. For that reason, it is
essential that ExpressionParser for line-expression stops before
consuming more than one token of file-expression.
BUG=angleproject:989
TEST=angle_unittests, dEQP-GLES3.functional.shaders.preprocessor.*
Change-Id: I0bb92f733c18891eeddbc61e7c5bebdf1003559a
Reviewed-on: https://chromium-review.googlesource.com/300962Tested-by:
Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by:
Jamie Madill <jmadill@chromium.org>
Reviewed-by:
Zhenyao Mo <zmo@chromium.org>
Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com>
Showing
Please
register
or
sign in
to comment