使用ANTLR从SAS作业创建Spark语法的方法

时间:2017-06-16 08:38:40

标签: sas grammar antlr4

我正在尝试使用ANTLR解析SAS作业并基于此创建解析器。

我使用来自https://github.com/xueqilsj/sas-grammar的SAS语法并使用ANTLR进行解析和词法分析器。我也在使用此处提供的链接:https://shijinglu.wordpress.com/2015/01/22/write-a-primitive-sas-grammar-in-antlr4/

为了澄清,每个SAS gramamr的格式都是:

grammar AbortStmt; 

import CommonLexerRules; 

abort_main
 : (abort_stmt)* EOF 
 ; 

abort_stmt
 : ABORT (ABEND | CANCEL (file_spec)? | RETURN )? INT? NOLIST? ';'
 ; 

file_spec
 : STRINGLITERAL 
 ; 

我的import语句有问题。在使用ANTLR创建自动生成的类之后,我收到以下错误:

  1. 无法将AbortStmtBaseListener.class加载为词法分析器或解析器。
  2. 无法导入规则。
  3. 我受到语法文件中定义的SAS导入的限制(因为每个语法文件都有一个已定义的导入)。还有其他解析语法文件和创建决策树的方法吗?

1 个答案:

答案 0 :(得分:0)

在语法上运行ANTLR后,结果就是一组.java个文件。然后你运行javac将它们编译成.class个文件吗?这可能会解释您的问题。我以前忘了这么做。之后,您可以运行TestRig来查看您的令牌或解析的图形表示。