当前位置:  开发笔记 > 编程语言 > 正文

编译ISO SQL-2003 ANTLR语法

如何解决《编译ISOSQL-2003ANTLR语法》经验,为你挑选了0个好方法。

我正在尝试从这里编译ISO-SQL 2003语法 http://www.antlr3.org/grammar/1304304798093/SQL2003_Grammar.zip.它的所有三个版本都可以在http://www.antlr3.org/grammar/list.html找到.

这些是我遵循的步骤,

    java -jar antlr-3.3-complete.jar -Xmx8G -Xwatchconversion sql2003Lexer.g

    java -jar antlr-3.3-complete.jar -Xmx8G -Xwatchconversion sql2003Parser.g

    javac ANTLRDemo.java

ANTLRDemo.java文件:

import org.antlr.runtime.*;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class ANTLRDemo {
   static String readFile(String path) throws IOException 
   {
       byte[] encoded = Files.readAllBytes(Paths.get(path));
       return new String(encoded, "UTF-8");
   }

   public static void main(String[] args) throws Exception {
       ANTLRStringStream in = new ANTLRStringStream( readFile(args[0]) );
       sql2003Lexer lexer = new sql2003Lexer(in);
       CommonTokenStream tokens = new CommonTokenStream(lexer);
       sql2003Parser parser = new sql2003Parser(tokens);
       parser.eval();
   }
}

前两个步骤工作正常,然后在编译我的主类时,我得到了很多与Java语法相关的错误,如下所示:

./sql2003Parser.java:96985:错误:不是语句$ UnsignedInteger.text =='1'./sql2003Parser.java:96985:错误:';' 预期$ UnsignedInteger.text =='1'./sql2003Parser.java:102659:错误:unclosed字符文字if(!(((Unsigned_Integer3887!= null?Unsigned_Integer3887.getText():null)=='01'))) {

如果我在设置解析器时出错了,请告诉我.
如果有人能告诉我如何使用ANTLR设置这个语法会很有帮助.

编辑:经过一些小小的调整后,我认为这些错误是由词法分析器和解析器规则中的操作引起的.有没有一种安全的方法来克服这个问题?

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有