xParse:使用扩展后的正则表达式对文本进行处理的语言
xParse 起源于对编译器前端的学习,在学习过程中,我需要一个高效的词法分析和语法分析工具。为此我参考 pcre 标准首先花费了两周的时间开发了 pdre 正则表达式项目。 pdre 后面改名为 xRe, 在此基础上添加对匹配结果做基本处理的功能,形成 xLex. 这个过程断断续续持续了两个多月,用时大概两周多。后续又花了几个月的零碎时间重构,并加上了算数和数据结构,形成现在的 xParse. xParse 不同于一般的文本处理语言,xParse 程序接受 xparse 源代码并将其编译成为高效的文本处理库文件,然后用户调用库文件中的函数处理输入文本。xParse 源代码有类似于 C 语言的语法,不同的是 xParse 函数的参数是由 xParse 规定的特殊的正则表达式 xRe. xRe 支持分支、标记、回调以及字符集的交、并、补运算。当一个函数的 xRe 匹配成功时,则会由该函数进行处理,并由该函数返回预先定义的数据。 该数据可由调用的函数捕获并进行更深入的处理。 xParse 的词法分析和语法分析采用递归下降的方式处理 xParse 源文件。由于 xParse 语法较为简单,语义明了,因此在进行语法分析之后就直接生成为 xParse 编写的虚拟机字节码,该字节码现在可以由虚拟机直接运行,后续将会支持原生机器码的生成。 xParse 面对的一个问题是字节码优化。由于 xParse 跳过了中间表示,因此中端优化的任务放在了后端。 因此,正如学习编译前端时研究 ply 库的源代码一样,我下载并阅读了 llvm 的源代码(中的一部分),现在我在尝试开发 minVM 项目并决定用 minVM 作为 xParse 的轻量级后端。