我需要构建一个用户友好的方式来在Lua中声明图。将创建这些图表的用户是通常不了解Lua语言的计算机科学家。描述Lua中的图形结构
目前,图形只是普通表格。一个例子(不工作):
local x = "some text"
local a_graph = {
a = 1,
b = {
c = x
},
c = {
k = b
}
}
上述图描述的工作版本应该足以建立其中“K = b”被替换为“K =参考至b”的曲线图(是的,“ b“包含在”a_graph“中)。我可以轻松编写函数进行查找(递归访问父母并查看他们的直接孩子),但我的问题是检测并存储“b”是参考。 我还需要允许“c = x”,其中x是现有变量。
我得出两个解决方案:
使用功能围绕基准,本身写成的文字,例如 'K = REF( “B”)'。 我不喜欢这个解决方案,因为它对我的用户来说很容易出错(他们可能会忘记“ref”或引号)。
当全局查找失败时,对_G或_ENV的__index进行覆盖以返回某些内容。 我测试了它,它工作,但似乎很奇怪。
有没有另一种解决方案?
图可以有循环(它可以不是树)?你的'a_graph' Lua表编码了什么图形? –
你看过graphviz吗?它既是一个命令行工具,它对于最终用户来说也具有非常直观的简单输入文件格式,以及一个DLL。如果你确实需要Lua,Lua绑定graphviz就会存在luagraph。 – Schollii
我个人发现你的第一个解决方案没有错。如果您花时间记录如何使用'ref()'函数,那么您可能更有价值,而不是花时间去开发新的DSL(涉及所有的捕获)。你将不得不维护更少的代码。专注于制作优秀的图形应用程序! :) – MBlanc