欢迎光临散文网 会员登陆 & 注册

[编译原理] JavaScript 实现简易标记语言编译器

2022-05-15 09:12 作者:BHznJNs  | 我要投稿

目标

目标:将一个简单语法的标记语言编译为 HTML

语言语法如下:

编译后:

编译产生数组经 Array.prototype.join() 即生成所需 HTML 代码


步骤

众所周知,一般的编译器在编译过程中都要经过 词法分析语法分析(生成AST)语义分析生成目标代码错误处理 等过程,但那是针对一般的编程语言,对于笔者这样简易的标记语言,完全可以省略多数步骤,仅保留 词法分析(分词)语法分析生成目标代码 三个步骤。

那么,在开始编码前,我们需要明确一下各阶段的输入和输出。

词法分析(分词)

输入(即原始文本):

输出:

语法分析

因为代码输出仍为一维数组,没有树状结构,所以不将其称为AST。

输入(与词法分析输出相同):

输出:

生成目标代码

输入(与语法分析输出相同):

输出(即最终代码):


具体实现

全局变量

词法分析

注:此阶段将单个词称作`term`(虽然函数名为tokenizer)

语法分析

核心代码如下:

完整代码:

目标代码生成

完整代码实现

感谢阅读。


[编译原理] JavaScript 实现简易标记语言编译器的评论 (共 条)

分享到微博请遵守国家法律