【发布时间】:2015-05-31 18:00:45
【问题描述】:
我需要在我的 Eclipse 插件(使用 Xtext 创建)运行时解析某些内容,然后将其视为用户已键入它,但实际上不会弹出并且用户可以看到它作为自己的输入。
例如,我有这个输入:
for "i" from 1 to 3 do {};
这个输入我的问题是变量 i 没有用“=”声明为普通声明,但我需要解析器告诉它是一个。所以我想让解析器解析
i = 1;
因此它将其识别为正常声明并允许对其进行交叉引用。
问候 Krzmbrzl
编辑:
总而言之,我想要添加一条语句 i=1;到 AST
我只想为现有语言提供 Eclipse 支持,所以我没有编写解释器或生成器。问题是当我有一个像上面这样的for循环时,该语言的实际解释器声明了一个变量 i (或者它在循环头中命名),因此这个变量在循环体中可用。在我的情况下,我的解析器不将 i 识别为变量,因为它只知道声明是通过“=”完成的,所以我不能在循环体中使用 i(如果我尝试,我会收到声明 i 的错误无法解决)。这就是为什么我想在创建这样的循环时手动添加这个声明。我不需要担心任何编译或解释困难,因为我自己不这样做。正如我已经说过的,我只想拥有这种语言的所有很酷的 Eclipse 功能。
【问题讨论】:
-
抱歉,您能否编辑您的问题以明确您的问题是什么?我认为它可以通过在 AST 中综合添加
i = 1;来解决。 -
这正是我的问题所在...如何将其添加到 AST...我将编辑我的问题以使其更清晰
-
好吧,反过来。你为什么需要它?你想用它做什么?我问是因为向 AST 添加语句是一个非常糟糕的主意。你是在实现解释器还是生成器?
-
我已经用这些信息更新了我的问题