У меня есть проблема, похожая на эту:
Как быстро напечатать древовидную структуру в строку в Ocaml?
Но наоборот, у меня уже есть строка, и я хочу разобрать ее обратно, чтобы она стала деревом.
Например, у меня есть
type expr =
Number of int
|Plus of expr*expr
|Prod of expr*expr
, и у меня есть строка типа 1+2 *3+4 (, немного отличающаяся от приведенной выше ссылки, предположим, что *
имеет более высокий порядок, чем +
)
. Тогда я хочу, чтобы мой результат был типа exprProd(Plus(1,2), Plus(3, 4))
Я нашел другую ссылку, которая может говорить об этом, но не уверен, что это способ решения моей проблемы:
Разбор грамматик с использованием OCaml
Пожалуйста, поделитесь некоторыми идеями, спасибо.