Недавно я начал работать над проектом по созданию графического интерфейса пользователя с использованием некоторой формы декларативного языка. Я имею в виду, что мне нужно описать иерархию объектов без указания типа виджетов GUI, которые будут использоваться для «отображения» этой иерархии. Например, для некоторой существующей иерархии H с использованием нотации JSON (или чего-то подобного):
H =
{
"title" : "Label_1"
"children" :
[
{
"title" : "Label_2"
"children":
[
{
"title": "Field_A"
"type": "Integer"
"value": 10
},
{
"title": "Field_B"
"type": "String"
"value": "YES"
}
]
}
]
}
Кто-то может построить простое окно, которое будет показано пользователю при нажатии кнопки с надписью «Label_1». В этом случае окно может называться «Метка_2» и иметь два поля с метками «Поле_A» и «Поле_B», принимающие целочисленные и логические значения соответственно.
Кто-то другой может поместить эту иерархию в древовидный список, например
--------------------------------------------------------
>Label_1 |
>Label_2 |
>Field_A | 10
>Field_B | YES
Мой первый вопрос: нужно ли мне создавать синтаксический анализатор языка, чтобы добиться чего-то подобного? Могу ли я тогда использовать JSON? Хотя мне не нужно поддерживать сложные иерархии, необходимо поддерживать взаимоисключающие иерархии (что-то вроде переключателей, включающих / отключающих параметры). У меня такое ощущение, что это похоже на синтаксический анализ языка с парой операторов. Не поймите меня неправильно, у меня образование в области машиностроения, и я не опытный программист.
Заранее благодарим вас за комментарии и помощь.