如前文所述,本书将使用C 语言作为语法处理器的编写语言。 都什么年代了还用C 语言?可能会有人这样想吧。其实就连我自己也会这样想。 但本书还是使用了C 语言,其中一个理由是因为yacc/lex 都是面向C 语言的工具。 yacc/lex 本身是很老的工具。老工具虽然都有一些历史遗留问题,但也有其优点,即正是因为历史悠久,所以会积累下更详尽的技术文档。如前文所述,目前的LL 语言大多使用yacc。 另一个使用C 语言的理由是:想要降低“依赖程度”的话,C 语言是最适合的。 比如说用Java 编写软件,运行环境中必须安装JVM(Java 虚拟机)。如果用C# 则必须要安装.NET.Framework。在自制编程语言的理由中,我们曾经列举了“可以用编程语言扩展应用程序”这一条,并且提到,如果能在编写应用程序的时候从底层到扩展全部自己实现会更加放心,其目的就是为了不依赖JVM或.NET.Framework。这样在Java 或.NET 版本升级时也就无需操心了。 此外考虑到组合各种应用程序这个用途,C 语言在众多编程语言中可以说是最具通用性的。无论被组合的应用程序采用何种语言编写,毫无疑问都可以调用C 语言。