Мы определили наш собственный DSL для описания пользовательских интерфейсов на основе JSON.
{
"widget":
{
"type": "label",
"left": "30px",
...
}
}
Мы не поддерживаем родительские и дочерние отношения, поэтому максимальная глубина этого дерева равна 1.
Моя задача состоит в том, чтобы я проверил, были ли установлены все обязательные свойства, нет ли дублирующих свойств и т. Д., И преобразовал этот документ в действительный qml.
Наша первая идея состояла в том, чтобы использовать Bison и flex, но мы столкнулись с проблемами, которые мы должны определить тип, а затем проверить условно на основе типа, свойства которого должны быть установлены. Поскольку Bison является LF (1) -парсером, я сильно сомневаюсь, что это возможно без некоторого взлома, верно?
Может ли кто-нибудь дать мне несколько ключевых слов или идей, как решить эту задачу? Решение должно быть основано на C ++.