Getting-started.md

来自osdev
跳到导航 跳到搜索

开始使用ANTLR v4

大家好,欢迎来到ANTLR的第4版! 它以 Crazy Nasty-Ass Honey Badger,因为ANTLR v4会拿走你给它的任何东西--它根本不在乎! 参见[Why do we need ANTLR v4?](faq/general.md)和preface of the ANTLR v4 book.

安装说明

ANTLR实际上是两件事: 一种工具,用于将语法转换为Java(或其他目标语言)中的语法分析器/词法分析器,以及生成的语法分析器/词法分析器所需的运行时。 即使您使用ANTLR IntelliJ插件或ANTLRWorks来运行ANTLR工具,生成的代码仍然需要运行时库。

您应该做的第一件事可能是下载并安装开发工具插件。 即使你只使用这些工具进行编辑,它们也很棒。 然后,按照下面的说明获取系统可用的运行时环境,以运行生成的解析器/词法分析器。 在接下来的内容中,我将讨论antlr-4.9-complete.jar,它具有该工具和运行时以及任何其他支持库 (例如,ANTLR v4是用v3编写的)。

如果您打算使用mvn、ant将ANTLR集成到现有的构建系统中,或者希望将ANTLR集成到您的IDE中,例如eclipse或intellij中, see Integrating ANTLR into Development Systems.

UNIX

  1. Install Java (version 1.7 or higher)

  2. Download

    $ cd /usr/local/lib
    $ curl -O https://www.antlr.org/download/antlr-4.9-complete.jar

    或者只是在浏览器中从网站下载: https://www.antlr.org/download.html 把它放在理性的地方,比如“/usr/local/lib”。

  3. Add antlr-4.9-complete.jar to your CLASSPATH:

    $ export CLASSPATH=".:/usr/local/lib/antlr-4.9-complete.jar:$CLASSPATH"

    将其放入您的.bash_profile或您的启动脚本中也是一个好主意。

  4. 为ANTLR工具和 “测试” 创建别名。

    $ alias antlr4='java -Xmx500M -cp "/usr/local/lib/antlr-4.9-complete.jar:$CLASSPATH" org.antlr.v4.Tool'
    $ alias grun='java -Xmx500M -cp "/usr/local/lib/antlr-4.9-complete.jar:$CLASSPATH" org.antlr.v4.gui.TestRig'

WINDOWS

(Thanks to Graham Wideman)

  1. Install Java (version 1.7 or higher)
  2. Download antlr-4.9-complete.jar (or whatever version) from https://www.antlr.org/download/ Save to your directory for 3rd party Java libraries, say C:\Javalib
  3. Add antlr-4.9-complete.jar to CLASSPATH, either:
    • Permanently: Using System Properties dialog > Environment variables > Create or append to CLASSPATH variable
    • Temporarily, at command line:
      SET CLASSPATH=.;C:\Javalib\antlr-4.9-complete.jar;%CLASSPATH%
  4. Create short convenient commands for the ANTLR Tool, and TestRig, using batch files or doskey commands:
    • Batch files (in directory in system PATH) antlr4.bat and grun.bat
      java org.antlr.v4.Tool %*
      @ECHO OFF
      SET TEST_CURRENT_DIR=%CLASSPATH:.;=%
      if "%TEST_CURRENT_DIR%" == "%CLASSPATH%" ( SET CLASSPATH=.;%CLASSPATH% )
      @ECHO ON
      java org.antlr.v4.gui.TestRig %*
    • Or, use doskey commands:
      doskey antlr4=java org.antlr.v4.Tool $*
      doskey grun =java org.antlr.v4.gui.TestRig $*

测试安装

直接启动org.antlr.v4.Tool:

$ java org.antlr.v4.Tool
ANTLR Parser Generator Version 4.9
-o ___ specify output directory where all output is generated
-lib ___ specify location of .tokens files
...

or use -jar option on java:

$ java -jar /usr/local/lib/antlr-4.9-complete.jar
ANTLR Parser Generator Version 4.9
-o ___ specify output directory where all output is generated
-lib ___ specify location of .tokens files
...

第一个例子

在临时目录中,将以下语法放入文件Hello中。g4:你好。g4

// Define a grammar called Hello
grammar Hello;
r  : 'hello' ID ;         // match keyword hello followed by an identifier
ID : [a-z]+ ;             // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines

然后在其上运行ANTLR工具:

$ cd /tmp
$ antlr4 Hello.g4
$ javac Hello*.java

现在测试一下:

$ grun Hello r -tree
(Now enter something like the string below)
hello parrt
(now,do:)
^D
(The output:)
(r hello parrt)
(That ^D means EOF on unix; it's ^Z in Windows.) The -tree option prints the parse tree in LISP notation.
It's nicer to look at parse trees visually.
$ grun Hello r -gui
hello parrt
^D

弹出一个对话框,显示规则'r'匹配的关键字'hello',后跟标识符'parrt'。

图书源代码

这本书有很多也应该有用的例子。 你可以在这里免费下载:

http://pragprog.com/titles/tpantlr2/source_code

此外,在GitHub上有大量v4的语法集合:

https://github.com/antlr/grammars-v4