【发布时间】:2016-07-08 18:36:30
【问题描述】:
我正在为一种非常简单的编程语言开发一个非常简单的解释器,并且我目前正在尝试提取一段代码来解释是否满足条件。目前,要评估的代码位于关键字 compare 和 endcompare 之间,我希望发生的情况如下:
- 从原始令牌列表中删除
endcompare之后和之前的所有内容,将compare保留在该列表中。 - 将删除的令牌放入另一个表中,当在原始表中找到
compare时进行评估,这不包括endcompare。
基本上:
original = {"a", "b", "c", "compare", "this", "please", "whatever", "endcompare", "d"}
在这个“神奇”函数之后,产生以下内容:
new = {"a", "b", "c", "compare", "d"}
c = {"this", "please", "whatever"}
在这种情况下,将评估new,当遇到关键字compare 时,评估c 并返回到new。
到目前为止,我已经进行了几次尝试,但都没有成功,除非您计算反转部分表格或跳过所有其他标记...
我将如何创建该表?
【问题讨论】:
-
好的,那么...你有什么问题?
-
@NicolBolas 我意识到我的问题措辞不是很准确(我的意思是我没有)
-
您已经为您的这种“语言”提供了解析器?它目前为您创建像
original这样的表格?您有可以“评估”new表并了解当它看到compare条目时要做什么的代码? (它如何知道要为compare评估哪个表? -
@EtanReisner 它只是读取一个文件并用空格分隔关键字,然后根据关键字的内容执行操作,例如当它看到
compare时,它会执行我正在尝试的比较块拔出。就像我说的,我知道这个实现的局限性,我可能会改变它。 -
这根本无法回答我的问题。