我们定义了自己的 DSL 来描述基于 JSON 的 UI。
{
"widget":
{
"type": "label",
"left": "30px",
...
}
}
我们不支持任何父子关系,因此这棵树的最大深度为 1。
我的任务是我必须检查是否所有强制属性都已设置,没有重复的属性等,并将此文档转换为有效的 qml。
我们的第一个想法是使用 Bison 和 flex,但遇到了问题,我们必须确定类型,然后根据类型有条件地检查需要设置哪些属性。由于 Bison 是一个 LF(1) 解析器,我非常怀疑这在没有黑客攻击的情况下是可能的,对吗?
有人可以为我提供一些关键字或想法来解决这个任务吗?解决方案应该基于C++。