Я уверен, что есть стандартный способ сделать это, но я даже не знаю, с чего начать его искать.
Как я могу распознать на любом языке структуры (грамматики) в виде, например:
Exp ::= Number |(Exp) | Exp + Exp
Number ::= Number Digit | Digit
Digit ::= 0 | ... | 9
Я имею в виду, что для строки типа 32 + (43 + 23)
, как я могу определить, является ли это законным? Есть ли стандартный алгоритм или что-то еще? Я не знаю, что искать, поэтому я не смог выполнить поиск на этом сайте.