python - 用python解析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-left(self, )
  ### turns the agent 90 degrees to the left

我正在努力解决的是如何实际处理程序...我主要担心的是 ifelse 语句中可能有另一个 ifelse,我不知道如何翻译它...

有人能指出我正确的方向吗?

最佳答案

NetLogo 就其全部通用性而言是一种相当难以解析的语言。 (这是我们真正的解析器: https://github.com/NetLogo/NetLogo/blob/5.0.x/src/main/org/nlogo/compiler/ExpressionParser.scala ;Repast 的人在构建 ReLogo 的 NetLogo 模型转换器时也写了一个,显然是使用 ANTLR, here 。)

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

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

如果你的目标子集足够大,你最好编写Python代码来启动JVM并直接调用NetLogo解析器,这样你就不必编写自己的解析器,但可以只需编写处理已解析语法树的 Python 代码即可。请参阅我的帖子 https://groups.google.com/d/msg/netlogo-devel/mDBskQMboYs/MycJtLh32S0J有关于此的一些信息。

关于python - 用python解析netlogo代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22848438/

相关文章:

NetLogo:海龟的移动百分比

python - 匹配文本中存储的关键字/短语

python - 在 Plone 4 的文件夹中限制每个成员一个内容项

python - DecisiontreeClassifier,为什么值的总和错误?

使用 JObject、JToken 和 JArray 进行 JSON.NET 解析

没有解析的 Python JSON 键

python - 如何防止 Django 1.11 为非托管模型创建迁移?

html - 用于访问和检索信息的 Perl 或 MySQL

netlogo - netlogo 中的动态海龟创建

NetLogo计算测试版分布/函数