当前位置: 首页 > 知识库问答 >
问题:

迁移antlr语法时出现问题

司徒泰
2023-03-14

我以前从未使用过antlr,但现在不得不将旧版本的语法迁移到最新版本。我正在尝试为C#目标生成lexer和解析器。我在迁移下面看到的开始规则上卡住了。

grammar expr;

DQUOTE: '\"';
SQUOTE: '\'';
NEG   : '-';
PLUS  : '+';
OPEN  : '(';
CLOSE : ')';
PERIOD: '.';
COMMA : ',';

start returns [Expression value]
:

    expression EOF { $value = $expression.value; }

;

expression returns [Expression value]

  :

    literal                             { $value = $literal.value; } 
  | name                                { $value = $name.value; } 
  | functionCall                        { $value = $functionCall.value; }

;

我得到以下错误。语法错误:

共有1个答案

邢博学
2023-03-14

你链接的答案似乎适用于你的案例。将lexer规则(即那些以大写字母开头的规则、dquote等)移动到解析器规则(如start)之后。

 类似资料:
  • 假设我有以下简单语法(查询DSL): 然后在某个时刻,我决定需要更改文本术语格式,例如: 我应该如何迁移用户使用以前版本的语法生成的现有数据?

  • 我试图在Windows上安装Antlr 4.4,目的是使用pyfuzzy,这是一个模糊逻辑的Python库,它依赖于Antlr的Python运行时来运行。我曾尝试(天真地)在不安装Antlr的情况下获得Python (2.7)的Antlr运行时,当然这并不成功。 因此,我尝试按照Windows的说明安装Antlr,但每次运行时都会出现错误: antlr .jar文件位于 C:\JavaLib 中,

  • 我正在构建一个Django应用程序,它有几个应用程序。使用SQLite数据库作为后端运行良好。当我试图使用“manage.py migrate”将后端迁移到Oracle时,我发现了以下错误 django.db.utils.DatabaseError:ORA-01950:对表空间“XXXXXX”没有权限 当我在数据库中检查我的用户权限时,它有创建表、视图等的权限。我尝试执行“manage.py sq

  • 现在,当我尝试转到“domain.com/admin”时,我遇到了这个错误 此外,我应该能够使用phpmyadmin使用域,如,但不能使用新的IP。 我所做的: > 使用WinSCP将文件从旧VP复制到新VP。 domain.com代码 编辑/opt/lampp/etc/httpd。形态 编辑 /opt/lampp/etc/extra/httpd-vhosts.conf <代码> 编辑/opt/l

  • 我有一个我正在迁移到。我唯一无法更改的两个代码段如下。 只是想知道以下内容应该在中 非常感谢任何建议,

  • 我试图使用这个迁移,但我不断地得到错误,就像下面这样 这是我的迁移文件 SQLite3::SQLException:表“Employees”已存在:创建表“Employees”(“ID”整数主键AUTOINCREMENT NOT NULL,“name”varchar(255),“hiredate”date,“salary”float,“fulltime”boolean DEFAULT NOT“,”