【发布时间】:2021-12-11 17:38:28
【问题描述】:
谁能帮我解决这两个问题?
第一个问题几乎解决了我的问题 regular expression for multiline commentary in matlab ,但我不知道我应该如何使用 ^.*%\{(?:\R(?!.*%\{).*)*\R\h*%\}$ 或者如果我想在语法中使用 antlr4。我一直在使用this源的matlab语法。
第二个与matlab中的另一种类型的注释相关,即a = 3 % type any ascii I want...。在这种情况下有效,当我以这种形式插入规则上下文 unary_expression 的标签替代项时:
unary_expression
: postfix_expression
| unary_operator postfix_expression
| postfix_expression COMMENT
;
其中COMMENT: '%' [ a-zA-Z0-9]*;,但是当我使用[\x00-\x7F] 而不是[ a-zA-Z0-9]*(我发现here)时解析出错,请参见下面的示例:
INPUT FOR PARSER: a = 3 % $£ K JFKL£J"!"OIJ+2432 3K3KJ£$K M£"Kdsa
ANTLR OUTPUT : Exception in thread "main" java.lang.RuntimeException: set is empty
at org.antlr.v4.runtime.misc.IntervalSet.getMaxElement(IntervalSet.java:421)
at org.antlr.v4.runtime.atn.ATNSerializer.serialize(ATNSerializer.java:169)
at org.antlr.v4.runtime.atn.ATNSerializer.getSerialized(ATNSerializer.java:601)
at org.antlr.v4.Tool.generateInterpreterData(Tool.java:745)
at org.antlr.v4.Tool.processNonCombinedGrammar(Tool.java:400)
at org.antlr.v4.Tool.process(Tool.java:361)
at org.antlr.v4.Tool.processGrammarsOnCommandLine(Tool.java:328)
at org.antlr.v4.Tool.main(Tool.java:172)
line 1:9 token recognition error at: '$'
line 1:20 token recognition error at: '"'
line 1:21 token recognition error at: '!'
line 1:22 token recognition error at: '"'
line 1:38 token recognition error at: '$'
line 1:43 token recognition error at: '"'
line 1:10 missing {',', ';', CR} at 'L'
line 1:32 missing {',', ';', CR} at '3'
谁能告诉我我做错了什么?这个问题的最佳实践是什么? (我不完全是正则表达式的人......)
【问题讨论】:
标签: matlab comments antlr4 grammar