1

有没有人在编译器实现中实际使用过控制容器的反转?我知道按照设计,编译器需要非常快,但我一直很好奇 IoC/DI 如何影响编程语言的构造——热交换语法,有人吗?

4

3 回答 3

1

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

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

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

于 2009-02-10T16:13:24.447 回答
0

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

于 2008-12-18T08:11:56.807 回答
-3

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

于 2008-12-18T08:34:46.293 回答