Я пытаюсь создать синтаксический анализатор (используя Ya cc) для логи первого порядка c языков, но я немного запутался. FOL может иметь много языков - каждый язык может иметь свои собственные наборы функций, отношений, именованных переменных. Таким образом, маленькие языки могут быть общими и включать очень мало символов, таких как animal
, human
, object
. Но богатые языки могут быть очень специфичными c и включать очень много символов, таких как cat
, dog
, monkey
, John
, Peter
, table
, spoon
и др. c.
Есть ли способ ввести параметризованный набор символов, чей набор может иметь почти бесконечную длину, например f(1)
, f(2)
, f(3)
, f(i)
, ... и тогда могут быть оба специфические c грамматические правила для специфических c и общие грамматические правила, подобные тем, которые связаны с f(i) for even i
и f(j) for odd j
. Я слышал о https://www.grammaticalframework.org/ и категориальных грамматиках, у которых есть категории, но они также имеют фиксированный набор констант.
Так что - я думаю, что - если я хотел бы сделать система открыта и готова принять растущие символы, тогда я должен быть готов обновить грамматику и использовать Ya cc для перекомпиляции синтаксического анализатора и создания некоторых обобщенных классов?
Есть ли подход для обработки развивающихся грамматик в программном обеспечении код? Может ли Ya cc сделать это?