Разбор строки Ocaml для создания дерева

У меня есть проблема, похожая на эту:

Как быстро напечатать древовидную структуру в строку в 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

Пожалуйста, поделитесь некоторыми идеями, спасибо.

7
задан Community 23 May 2017 в 11:43
поделиться