Я написал парсер CYK и использую его для разбора математических выражений типа (1 + 2) / 3-4 ^ 5.Я также написал код, который строит дерево разбора из таблицы (левая треугольная матрица), которую предоставляет алгоритм CYK, используя грамматику ниже.Мой вопрос заключается в том, можно ли построить дерево выражений (какие внутренние узлы являются операциями, а листы являются числами) непосредственно из моего дерева разбора?Грамматика (для CYK требуется нормальная форма Хомского), которую я использовал для разбора, следующая:
start symbol: A
A -> [N(,B], B -> [A,N)], A -> [A,C]
C -> [N+,A], C -> [N-,A], C -> [N/,A]
C -> [N*,A], C -> [N^,A], N+ -> +
N- -> - , N/ -> / , N* -> *
N^ -> ^ , N( -> ( , N) -> )
A -> number