我正在为TeX中的几种语言编写解释器,这将允许TeX用户从他们喜欢的语言插入一些代码(如果支持),并让TeX在生成时运行它pdf结果。
我开始为Brainfuck编写解释器,因为它是一种非常简单的语言。我认为GolfScript将是一块蛋糕,但它比我预期的更丰富(主要是因为它基于相当精细的Ruby)。为了它,我可能会做Whitespace。但是这些都不是人们实际使用的,所以到目前为止,整个过程主要是练习如何在TeX中最好地编写口译员。
我的问题是:我应该考虑哪种真实语言?它应该具有以下特质:
我假设每种语言都有解释器(编译只能提高速度),如果你想到拟议语言的技术障碍,请提及。
编辑:我也对诸如“实现Perl 2,然后逐渐添加对更高版本的支持”之类的评论感兴趣(不知道这个特定场景是不是一个好主意)。我已经为正则表达式编写了一些支持。
答案 0 :(得分:2)
基于堆栈的语言如Forth(甚至是PostScript的一个子集)怎么样?堆栈操作应该相对容易地转换为TeX构造。最后,如果所有这些都是为了练习而完成的,那么实现C预处理器呢?
答案 1 :(得分:1)
您可以使用某些基于LISP的语言(如Beginning Student Language)或某些ML变体(如OCaml)。对于解释类似ML的代码的简单练习,只需实现定义,函数应用程序,算术和条件表达式就可以为您提供一个良好的开端:
let rec factorial n =
if n = 0 then 1 else n * (factorial (n-1))
let sqr x = x * x
let compose f g x = f (g x)
(compose sqr sqr) (factorial 3)
还要考虑Lua,它旨在成为一种优秀的脚本语言,可以让用户自定义您的应用程序并且非常受欢迎。