1

我们定义了自己的 DSL 来描述基于 JSON 的 UI。

{
    "widget": 
    {                            
        "type": "label",  
        "left": "30px",
        ...
    }
}

我们不支持任何父子关系,因此这棵树的最大深度为 1。

我的任务是我必须检查是否所有强制属性都已设置,没有重复的属性等,并将此文档转换为有效的 qml。

我们的第一个想法是使用 Bison 和 flex,但遇到了问题,我们必须确定类型,然后根据类型有条件地检查需要设置哪些属性。由于 Bison 是一个 LF(1) 解析器,我非常怀疑这在没有黑客攻击的情况下是可能的,对吗?

有人可以为我提供一些关键字或想法来解决这个任务吗?解决方案应该基于C++。

4

0 回答 0