gpt4 book ai didi

antlr4 - 在输入 ANTLR4 处没有可行的替代方案?

转载 作者:行者123 更新时间:2023-12-04 10:03:51 33 4
gpt4 key购买 nike

我正在用 ANTLR 4 创建我自己的语言,我想创建一个规则来定义变量的类型,例如。

string = "string"
boolean = true
integer = 123
double = 12.3
string = string // reference to variable

这是我的语法。
// lexer grammar
fragment LETTER : [A-Za-z];
fragment DIGIT : [0-9];
ID : LETTER+;
STRING : '"' ( ~ '"' )* '"' ;
BOOLEAN: ( 'true' | 'fase');
INTEGER: DIGIT+ ;
DOUBLE: DIGIT+ ('.' DIGIT+)*;
// parser grammar
program: main EOF;
main: study ;
study : studyBlock (assignVariableBlock)? ;
simpleAssign: name = ID '=' value = (STRING | BOOLEAN | INTEGER | BOOLEAN | ID);
listAssign: name = ID '=' value = listString #listStringAssign;
assign: simpleAssign #simpleVariableAssign
| listAssign #listOfVariableAssign
;
assignVariableBlock: assign+;
key: name = ID '[' value = STRING ']';
listString: '{' STRING (',' STRING)* '}';
studyParameters: (| ( simpleAssign (',' simpleAssign)*) );
studyBlock: 'study' '(' studyParameters ')' ;

当我使用此示例进行测试时,ANTLR 显示以下错误
study(timestamp = "10:30", region = "region", businessDate="2020-03-05", processType="ID")
bool = true
region = "region"
region = region
line 4:7 no viable alternative at input 'bool=true'
line 6:9 no viable alternative at input 'region=region'

我该如何解决?

最佳答案

当我测试你的语法并从 program 开始时给定输入的规则,我得到以下解析树(没有任何错误或警告):

enter image description here

您要么没有从正确的解析器规则开始,要么正在测试旧的解析器并且需要从您的语法生成新类。

关于antlr4 - 在输入 ANTLR4 处没有可行的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61689681/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com