2.antlr4開發

  • 2019 年 12 月 20 日
  • 筆記

2.antlr4開發

上一篇:1.ANTLR4 helloworld基礎開發與IDEA插件使用

獲取源碼

antlr4.7.2

1.通過MyHelloVisitor實現HelloVisitor

package wang.xiaolei.lei;    import org.antlr.v4.runtime.tree.ErrorNode;  import org.antlr.v4.runtime.tree.ParseTree;  import org.antlr.v4.runtime.tree.RuleNode;  import org.antlr.v4.runtime.tree.TerminalNode;    /**   * 作者: wangxiaolei   * 時間: 2019/12/12   * 微信公眾號:從入門到精通   * 微信:chinesedream2   */    public class MyHelloVisitor implements HelloVisitor {      @Override      public Object visitR(HelloParser.RContext ctx) {          return null;      }        @Override      public Object visit(ParseTree tree) {          return null;      }        @Override      public Object visitChildren(RuleNode node) {          return null;      }        @Override      public Object visitTerminal(TerminalNode node) {          return null;      }        @Override      public Object visitErrorNode(ErrorNode node) {          return null;      }  }

2.編寫main函數

package wang.xiaolei.lei;    import org.antlr.v4.runtime.CharStream;  import org.antlr.v4.runtime.CharStreams;  import org.antlr.v4.runtime.CommonTokenStream;  import org.antlr.v4.runtime.tree.ParseTree;    /**   * 作者: wangxiaolei   * 時間: 2019/12/12   * 微信公眾號:從入門到精通   * 微信:chinesedream2   */    public class HelloMain {      public static void main(String ...args) {            CharStream input = CharStreams.fromString("hellotworld");            // 構造詞法分析器          HelloLexer lexer=new HelloLexer(input);            CommonTokenStream tokens = new CommonTokenStream(lexer);            // 實例化解析器          HelloParser parser = new HelloParser(tokens);            ParseTree tree = parser.r();            MyHelloVisitor myHelloVisitor = new MyHelloVisitor();            myHelloVisitor.visit(tree);        }  }

運行 HelloMain

3.如果改變輸入如 helltworld就會檢測出問題

上一篇:1.ANTLR4 helloworld基礎開發與IDEA插件使用