转载

自己实现一门编程语言——1.基于VS code构建一个简单的开发环境

提起软件工程中最复杂的一类软件,编译器绝对名列前矛。除了最传统的编译之外,下面这些功能的实现也和编译密切相关:

  • 很多语言都已经具备的REPL环境;
  • 编辑器中的代码高亮、各种Lint工具以及智能提示;

因此,可以说,无论你使用什么编程语言工作,这门源自计算机上古时代的技术都在和你产生着关联。然而,一门编程语言究竟是如何设计出来的?计算机究竟是如何把文本变成执行程序的?如何让编译器支持各种不同的硬件架构?为什么编译器可以生成比手工汇编更优秀的执行代码?可以说,在编译器背后,蕴藏着一座巨大的知识宝库,一旦你打开它,那些数据结构、那些算法、那些重要观念、那些编程实践中最重要最根本的珍宝,那些在你脑中蛰伏已久仿佛已经还给老师的记忆,将重新在你眼前闪闪发光 :)

emm...

当然,说的虽然挺好,但是,不可否认的事情是,学习编译原理并不容易。因为其中很多抽象的观念,我们很难通过形象的方式或者简单的代码片段得以实践。但是,很难,不等于不可以。而这,就是我们这个系列的目的。在开始动手实现一门简单的编程语言之前,我们先来介绍一个工具: Antlr 。

现在,先不用管这个工具到底是干嘛的,我们直接把工作环境安装并搭建起来。在接下来的例子中,我们会随用,随着讲到它的各种功能。

准备Antlr环境

首先,Antlr是一个基于Java开发的工具,因此,你要先给自己的电脑安装Java环境。直接 在这里 下载对应操作系统版本的JDK安装包就好了。完成后,在终端执行 java -version ,能够看到类似下面这样的结果就好了:

java version "10" 2018-03-20
Java(TM) SE Runtime Environment 18.3 (build 10+46)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)

其次,我们来安装Antlr,直接按照官网给出的步骤就行了:

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

完成后,根据你使用的Terminal,把下面这三行内容添加到 .zshrc 或者 .bashrc 中:

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

这里,你不了解Java也完全没关系,我们只是创建了两个命令的别名,其中: antlr4 表示执行Antlr工具自身; grun 是一个帮助我们测试语法的工具。下一节,我们会用到。

添加完成后,更新一下Termianl环境,然后直接执行 antlr4 ,如果可以看到帮助信息,就表示安装好了:

```shell

➜ ~ antlr4

ANTLR Parser Generator Version 4.7.1

-o ___ specify output directory where all output is generated

-lib ___ specify location of grammars, tokens files

-atn generate rule augmented transition network diagrams

-encoding ___ specify grammar file encoding; e.g., euc-jp

原文  https://xiaozhuanlan.com/topic/5263907184
正文到此结束
Loading...