Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python解析netlogo代码_Python_Parsing_Netlogo - Fatal编程技术网

用python解析netlogo代码

用python解析netlogo代码,python,parsing,netlogo,Python,Parsing,Netlogo,我有一些代码是由netlogo模拟生成的,我需要读入这些代码并用Python进行解析。然后需要在非常特定的模拟中运行代码,该模拟将编写与netlogo代码匹配的函数 例如: netlogoCode = "ifelse ahead-clear [ move ][ turn-left move ]" def ahead-cear(self, ) ### returns true if the environment ahead of the agent is clear def turn-l

我有一些代码是由netlogo模拟生成的,我需要读入这些代码并用Python进行解析。然后需要在非常特定的模拟中运行代码,该模拟将编写与netlogo代码匹配的函数

例如:

netlogoCode = "ifelse ahead-clear [ move ][ turn-left move ]"

def ahead-cear(self, )
  ### returns true if the environment ahead of the agent is clear

def turn-left(self, )
  ### turns the agent 90 degrees to the left
我正在努力想的是如何实际处理程序。。。我主要担心的是ifelse语句中可能包含另一个ifelse,我不知道如何翻译它


谁能给我指一下正确的方向吗

NetLogo的通用性是一种很难解析的语言。(这是我们真正的解析器:;当他们构建ReLogo的NetLogo模型转换器时,Repast人员也编写了一个解析器,显然是使用ANTLR编写的。)

您需要支持的NetLogo子集有多大或多小

如果目标子集足够小,那么这主要是关于如何在Python中进行解析的问题。我不是Pythonista,所以我不是回答这个问题的最佳人选


如果目标子集足够大,那么最好编写启动JVM并直接调用NetLogo解析器的Python代码,这样就不必编写自己的解析器,只需编写处理已解析语法树的Python代码即可。有关这方面的信息,请参阅我的帖子。

嗨,赛斯,谢谢你的评论!真的很有帮助。。。我实际上只是在分析ifelse[]]和while语句。我已经决定了最好的方法可能只是做一个字符串替换。