Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Antlr4 如何将所有字符都大写?_Antlr4 - Fatal编程技术网

Antlr4 如何将所有字符都大写?

Antlr4 如何将所有字符都大写?,antlr4,Antlr4,我想在树检查所有字符之前,将其大写。我正在写一个MIPS汇编程序,所以如果有人写: jal $0000000C 它不会匹配,因为我只有“日航”。当然,您可以简单地放置一个替代项,或者用户自己将其大写。但这不是重点。比如说,你写了一些大代码,错误地写了最后一个字母,JAl是小写的。ANTLR4将发出错误消息。所以我正在寻找一种在ANTLR4检查所有字符之前将其大写的快速方法。因为写每一个备选的“日航”|“日航”|“日航”|“日航”等都很耗时。你可以这样做: JAL : J A L; fragm

我想在树检查所有字符之前,将其大写。我正在写一个MIPS汇编程序,所以如果有人写:

jal $0000000C

它不会匹配,因为我只有“日航”。当然,您可以简单地放置一个替代项,或者用户自己将其大写。但这不是重点。比如说,你写了一些大代码,错误地写了最后一个字母,JAl是小写的。ANTLR4将发出错误消息。所以我正在寻找一种在ANTLR4检查所有字符之前将其大写的快速方法。因为写每一个备选的“日航”|“日航”|“日航”|“日航”等都很耗时。

你可以这样做:

JAL : J A L;

fragment J : [Jj];
fragment A : [Aa];
fragment L : [Ll];

... 或者使解析器不区分大小写。@BartKiers好吧,我已经尝试在访问者中使所有字母都大写(用C#),所以我编写了如下内容:var opcode=context.opcode_RTYPE().GetText().ToUpper();很明显,它不会影响树本身,所以它仍然会让我出错。但这没用。@Tetragrammaton,我不明白你的意思。如果你像我给你展示的那样在lexer中定义
jal
标识符,它将匹配以下任何一项:
'jal'
'jal'
'jal'
'jal'
等等。@Tetragrammaton Bart完全正确(押韵:)。此外,首先,您应该确定当有人编写“jal”时,您的“编译器”是否要报告错误。虽然这是错误的,但允许用户编写这篇文章并没有多大意义,而且在内部将其更正为“JAL”。这意味着用户将总是写“jal”,它将总是有效的,而不是你的大写字母的要求对…有什么好处。。。。