基本概念

ANTLR是一个可以根据用户定义的文法自动生成词法和语法分析器的工具,并且支持多种语言(默认java,其他语言需要另行配置)

LInux下安装和配置

进入/usr/local/lib目录下

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

之后将其加入到环境变量中

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

但是这个名字太长了,为了方便使用,可以设置别名

1
2
alias antlr4='java -jar /usr/local/lib/antlr-4.9.2-complete.jar'
alias grun='java org.antlr.v4.gui.TestRig'

配置C++环境(需要安装cmake,uuid-dev,pkg-config)

由于课程设计要求,所以需要ANTLR4生成C++的代码,要额外的配置,首先下载runtime库,下载链接

压缩包里有两个readme文档,可以自行阅读

名字太长了不如换个名字如runtime-cpp

解压后放在任意一个文件夹里,进入runtime-cpp文件夹,输入命令

1
2
3
4
mkdir build && mkdir run && cd build
cmake ..\
make\
make install

这样就会将生成的库放在usr/local/include

课程设计要求在docker中进行编程,所以以上内容可以在编写Dockerfile时完成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
FROM ubuntu
COPY antlr-4.9.2-complete.jar /usr/local/lib
RUN apt-get update\
&& apt-get install vim -y\
&& apt-get install default-jdk -y\
&& apt-get install uuid-dev -y\
&& apt-get install cmake -y\
&& apt-get install g++ -y\
&& apt-get install pkg-config -y\
&& apt-get install -y libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev\
&& apt-get install git -y
RUN echo "export CLASSPATH='.:/usr/local/lib/antlr-4.9.2-complete.jar:$CLASSPATH'" >> /etc/bash.bashrc\
&& echo "alias antlr4='java -jar /usr/local/lib/antlr-4.9.2-complete.jar'" >> /etc/bash.bashrc\
&& echo "alias grun='java org.antlr.v4.gui.TestRig'" >> /etc/bash.bashrc\
&& echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib" >> /etc/bash.bashrc\
&& mkdir -p /home/root/runtime-cpp
COPY runtime-cpp /home/root/runtime-cpp
WORKDIR /home/root/runtime-cpp
RUN mkdir build && mkdir run && cd build\
&& cmake ..\
&& make\
&& make install

注意,antlr4的包和runtime的文件夹要和Dockerfile放在同一文件夹下