Построение дерева выражений из дерева разбора - PullRequest
2 голосов
/ 10 мая 2019

Я написал парсер 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
...