antlr - 重写(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
解决方案
推荐阅读
- android - Flutter:在Android Studio中打开android模块进行打包
- haskell - 手动推断 (\xyz -> (xy) z) 的类型
- iframe - 在父窗口中打开嵌入式谷歌表单的链接
- node.js - Loopback 4 身份验证元数据选项未定义
- gcc - gcc 无法识别选项 --allow-multiple-definition
- python - 计算for循环中生成的数据帧中数据之间的标准偏差
- javascript - Javascript 中的 Date 如何重载 +、-、>= 和 <= 运算符?
- javascript - 离子地理定位在android模拟器中不起作用
- postgresql - 如何创建用于存储产品信息的表 (SQL)
- java - 如何使用现有数据模型(Java 对象 POJO 类)并使用 Jackson 获取完整的 JSON 字符串?