有没有人编译器实现中实际使用过控制容器的转换? 我知道从设计上来说,编译器需要非常快,但是我一直对IoC / DI如何影响编程语言(热插拔语法)的构造感到好奇。

===============>>#1 票数:1

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

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

这不是一个新主意。 在被认为是三个字母的首字母缩略词之前,IoC被称为“后期绑定”,并且相当被认为是一个好主意。

===============>>#2 票数:0

LR(k)语法通常使用由表(action-goto / shift-reduce表)驱动的通用解析器系统,因此您使用表生成器工具来生成这些表并将其馈送到通用解析器系统,然后该通用解析器系统可以解析您的输入使用表格。 通常,这些解析器系统会向您发出信号,告知您非终结符已减少。 例如,请参阅免费的GoldParser系统。

===============>>#3 票数:-3

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

  ask by plaureano translate from so

未解决问题?本站智能推荐:

36回复

什么是控制反转?

第一次遇到控制反转(或IoC)时,可能会很混乱。 它是什么? 它解决什么问题? 什么时候合适,什么时候不合适?
2回复

控制反转(Dependency Inversion)系统中的事件走哪条路?

向上还是向下 ? 我是一个非常视觉化的人。 我将我的应用程序视为一个层次结构,其中顶部是根,底部是叶。 我也了解IoC容器不了解其包含的对象的职责/功能。 取而代之的是,所包含的对象通过某种抽象的接口了解其容器,即“上下文”。 上:(非IoC方式吗?)是否应该将我的事件从层
1回复

如何更改与控制反转原理兼容的代码?

我在Web应用程序中使用AuthorzieAttribute进行身份验证和授权。 如何更改与控制反转( IOC )原理兼容的HandleUnauthorizedRequest方法?
3回复

运行时多态性可以称为控制反转吗?

我们知道在OOP中运行时/动态多态性是什么(原则1)。 控制反转仅表示(根据Wiki上的定义) 控制反转 (原则2)。 您如何区分这两个; 我们可以说#1是#2的超集。 如果不是,我们如何区别或说它们相似
4回复

控制反转特定于OO语言吗?

提出这个问题的另一种方法是:根据你的控制反转是什么? 我问这个问题是因为关于IoC的维基百科文章被非OO解释劫持了。 这是从讨论页面获取的 ,来自2007年: 我冒昧地完全重写了这个页面,因为之前的内容被无意义的“面向对象”喋喋不休地接管了...... 我没有看到Inv
1回复

当运行时类类型未知时,将工厂方法与控制反转一起使用

我有一个有关IOC的问题,以及何时我不知道要在运行时实例化的类的问题。 例如,我有几种类型的View类。 (HtmlView,CsvView,PDFView等)实现了我的视图界面。 我需要的视图类的类型由用户输入(DB中的字符串)确定。 我倾向于使用具有make方法的ViewFactor
4回复

生产编译器如何在流控制上实现析构函数处理

长话短说 - 我正在编写一个编译器,并且达到了OOP功能,我面临着涉及处理析构函数的两难问题。 基本上我有两个选择: 1 - 将所有析构函数放在程序中该点需要调用的对象上。 这个选项听起来像是性能友好且简单但会使代码膨胀,因为根据控制流程,某些析构函数可以多次复制。 2 -
1回复

面向对象语言的编译器中的符号表范围

我正在为C ++子集的编译器建立符号表。 我的问题是如何处理对象范围。 我的意思是,在像Pascal这样的普通语言中,我们应该为每个范围创建一个符号表。 但是对于C ++,我应该考虑对象的方法和属性的另一种方法吗? 问候。
1回复

编译器如何编译虚拟/重写方法

我正在开发针对面向对象语言的编译器,该语言针对我编写的虚拟机,我将其用作跨平台抽象层。 我对继承方法的工作方式感到困惑。 可以说我有以下几行C#代码。 现在这将输出'Dis be mah object'。 如果我调用regularMethod,但编译后的代码实际上会执行以下操作:
2回复

与向模型注入控制器相反,向数据注入控制器有具体的好处吗?

我提出这个问题的目的是找出与将模型注入到控制器(更通用的方法)相比,直接将其所需的数据注入到控制器是否有好处(更具体的方法)。 或确定是否只是偏好问题 。 带有型号的注射控制器: 模型可用于运行各种查询以检索数据的各个位,但是它比数据本身的重量大。 模型实质上包含数据,或者至少它