gpt4 book ai didi

java - ANTLR4语法解析器问题

转载 作者:行者123 更新时间:2023-11-29 07:50:43 26 4
gpt4 key购买 nike

我对 ANTLR 比较陌生,所以请多多包涵。

我有以下模仿语法的解析非常简单的一阶逻辑公式:

grammar graph;


/*------------------------------------------------------------------
* PARSER RULES
*------------------------------------------------------------------*/

input
:
TRUE | FALSE | formula | EOF
;

formula
:
(element)+ ST condition
;

element
:
quantifier IN domain
;

condition
:
atom EQUALS (assignment | atom)
;

atom
:
variable DOT property
;

quantifier
:
(FOREACH | EXISTS) variable
;

domain
:
(GRAPH_A | GRAPH_B)
;

variable
:
(NODE | EDGE)
;

property
:
(COLOR | VALUE)
;

assignment
:
(COLORTYPE | NUMBER)
;


/*------------------------------------------------------------------
* LEXER RULES
*------------------------------------------------------------------*/
COLORTYPE : ('a'..'z')+ ;

NUMBER : ('0'..'9')+ (DOT ('0'..'9')+)? ;

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

EXISTS : 'Exists' ;

FOREACH : 'Foreach' ;

TRUE : 'True' ;

FALSE : 'False' ;

ST : '->' ;

NODE : 'node' ;

EDGE : 'edge' ;

IN : 'in' ;

GRAPH_A : 'GraphA' ;

GRAPH_B : 'GraphB' ;

COLOR : 'color' ;

VALUE : 'value' ;

EQUALS : '=' ;

DOT : '.' ;

语法非常简单。我能够用

生成词法分析器和解析器类
java org.antlr.v4.Tool graph.g4

但是当我尝试解析下面的表达式时

Exists node in GraphA -> node.color = 'red'

我最终遇到以下错误:

第 1:38 行标记识别错误:'''

第 1:42 行标记识别错误:'''

规则 r 没有方法或者它有参数

规则“r”的含义是什么?我怎样才能理解问题出在哪里?任何帮助将不胜感激!

最佳答案

问题是 COLORTYPE 与输入 red 匹配,但您实际上指定了 'red'。您需要执行以下操作之一:

  1. 删除输入中 red 周围的引号。
  2. 为您的 COLORTYPE 规则添加引号:

    COLORTYPE : '\'' [a-z]+ '\'';

关于java - ANTLR4语法解析器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21470293/

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