上QQ阅读APP看书,第一时间看更新
1.4 用什么语言来制作
如前文所述,本书将使用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语言。