首页 > 解决方案 > 重写(X+)?作为 ANTLR 语法中的 X*

问题描述

https://github.com/antlr/grammars-v4

我发现很多(X+)?.

这些不应该被替换X*吗?

以下是我使用自己的分析工具发现的一组实例:

sql/plsql/PlSqlParser.g4(1654,11): Warning: rewrite as `X*`, token `?` at offset 39760
sql/plsql/PlSqlParser.g4(1754,27): Warning: rewrite as `X*`, token `?` at offset 42796
sql/plsql/PlSqlParser.g4(1786,31): Warning: rewrite as `X*`, token `?` at offset 43928
sql/plsql/PlSqlParser.g4(1815,31): Warning: rewrite as `X*`, token `?` at offset 44865
sql/plsql/PlSqlParser.g4(2233,74): Warning: rewrite as `X*`, token `?` at offset 56180
sql/plsql/PlSqlParser.g4(2245,12): Warning: rewrite as `X*`, token `?` at offset 56458
sql/plsql/PlSqlParser.g4(2490,82): Warning: rewrite as `X*`, token `?` at offset 62412
sql/plsql/PlSqlParser.g4(2577,137): Warning: rewrite as `X*`, token `?` at offset 64544
sql/mysql/Positive-Technologies/MySqlLexer.g4(1176,50): Warning: rewrite as `X*`, token `?` at offset 53848
sql/mysql/Positive-Technologies/MySqlLexer.g4(1178,52): Warning: rewrite as `X*`, token `?` at offset 53988
sql/mysql/Positive-Technologies/MySqlLexer.g4(1176,50): Warning: rewrite as `X*`, token `?` at offset 53848
sql/mysql/Positive-Technologies/MySqlLexer.g4(1178,52): Warning: rewrite as `X*`, token `?` at offset 53988
sql/tsql/TSqlParser.g4(2410,13): Warning: rewrite as `X*`, token `?` at offset 84325
sql/tsql/TSqlParser.g4(2459,13): Warning: rewrite as `X*`, token `?` at offset 86539
informix/informix.g4(2879,25): Warning: rewrite as `X*`, token `?` at offset 35322
antlr/antlr2/examples/python.g2(660,48): Warning: rewrite as `X*`, token `?` at offset 13664
antlr/antlr2/examples/java.g2(905,4): Warning: rewrite as `X*`, token `?` at offset 25794
cql3/CqlLexer.g4(996,19): Warning: rewrite as `X*`, token `?` at offset 8042
cql3/CqlLexer.g4(996,88): Warning: rewrite as `X*`, token `?` at offset 8111
cql3/CqlLexer.g4(996,19): Warning: rewrite as `X*`, token `?` at offset 8042
cql3/CqlLexer.g4(996,88): Warning: rewrite as `X*`, token `?` at offset 8111
restructuredtext/ReStructuredText.g4(100,49): Warning: rewrite as `X*`, token `?` at offset 2632
fortran77/Fortran77Parser.g4(433,61): Warning: rewrite as `X*`, token `?` at offset 7722
fortran77/Fortran77Parser.g4(437,47): Warning: rewrite as `X*`, token `?` at offset 7790
fortran77/Fortran77Parser.g4(441,48): Warning: rewrite as `X*`, token `?` at offset 7861
verilog/verilog/Verilog2001.g4(366,68): Warning: rewrite as `X*`, token `?` at offset 10098
verilog/verilog/Verilog2001.g4(370,33): Warning: rewrite as `X*`, token `?` at offset 10164
verilog/verilog/Verilog2001.g4(370,67): Warning: rewrite as `X*`, token `?` at offset 10198
prov-n/PROV_N.g4(28,63): Warning: rewrite as `X*`, token `?` at offset 1253
cobol85/Cobol85.g4(174,47): Warning: rewrite as `X*`, token `?` at offset 4773
vb6/VisualBasic6Parser.g4(110,41): Warning: rewrite as `X*`, token `?` at offset 2788

标签: antlrantlr4grammar

解决方案


推荐阅读