编译器中的控制反转

时间:2008-12-18 07:30:06

标签: oop inversion-of-control compiler-construction

有没有人在编译器实现中实际使用过反转控制容器?我知道在设计上,编译器需要非常快,但我一直很好奇IoC / DI如何影响编程语言的构建 - 热插拔语法,任何人?

3 个答案:

答案 0 :(得分:1)

Lisp风格的语言经常这样做。 Reader macros是用户编写的代码片段,用于扩展语言的阅读器(以及语法)。普通的宏是用户编写的代码片段,它们也扩展了语言。

整个语法不是可热插拔的,但某些部分可以通过各种方式扩展。

这一切都不是新想法。在被认为值得一个三个字母的缩写之前,IoC被称为“后期绑定”,并且非常赞同这是一个好主意。

答案 1 :(得分:0)

LR(k)语法通常使用由表驱动的通用解析器系统(action-goto / shift-reduce表),因此您使用表生成器工具生成这些表并将它们提供给通用解析器系统,然后可以使用表解析您的输入。通常,这些解析器系统会向您发出非终端已减少的信号。例如,参见免费的GoldParser系统。

答案 2 :(得分:-3)

我不会把它称为 inversion ,因为它对编译器来说很自然。它们通常是一系列传递,它们将输入语言中的代码转换为输出语言中的代码。当然,您可以交换不同的传递(例如,gcc通过使用不同的前端编译多种语言)。