gpt4 book ai didi

java - antlr4 中允许空格

转载 作者:行者123 更新时间:2023-12-01 12:59:34 24 4
gpt4 key购买 nike

我正在编写语法,但在允许空格方面遇到问题。如果我写“hello”+“world”,我的语法就有效,但如果我尝试编译如下所示的操作,则会遇到问题:

“你好”+“世界”

这是我的语法文件:

grammar Common;

identifierNum: hostId DOT observableId DOT method ':Num';
identifierString: hostId DOT observableId DOT method ':String';


hostId: ID;
observableId: ID;
method: ID'('')';

MUL: '*';
DIV: '/';
ADD: '+';
SUB: '-';
DOT: '.';
MIN: '<';
MAX: '>';


ID: [a-zA-Z] [a-zA-Z0-9]*;
STRING: '\''[a-zA-Z0-9]+ '\'';
DIGIT: [0-9]+ ;
DOUBLE: [0-9]* DOT [0-9]+ ;


WS: [ \n\t]+ -> skip;

还有这个

grammar Expression;
import Common;

expression: stringExpr # StringExpression
| numExpr # NumExpression
;

stringExpr: stringExpr ADD stringExpr # Concat
| STRING # BaseStr
| identifierString # IdString
| '(' stringExpr ')' # ParensString
;

numExpr: numExpr op=(MUL|DIV) numExpr # MulDiv
| numExpr op=(ADD|SUB) numExpr # AddSub
| DIGIT # Int
| DOUBLE # Double
| identifierNum # IdNum
| '(' numExpr ')' # ParensNum
;

感谢您的帮助!

最佳答案

您不允许 STRING token 中包含空格,因此在解析此 token 之前,它将被作为 WS 过滤掉。你可以这样改变它:

STRING: '\''[ a-zA-Z0-9]+ '\'';

关于java - antlr4 中允许空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23625154/

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