Стандартные алгоритмы распознавания правильности грамматики

Я уверен, что есть стандартный способ сделать это, но я даже не знаю, с чего начать его искать.

Как я могу распознать на любом языке структуры (грамматики) в виде, например:

Exp ::= Number |(Exp) | Exp + Exp 
Number ::= Number Digit | Digit
Digit ::= 0 | ... | 9

Я имею в виду, что для строки типа 32 + (43 + 23) , как я могу определить, является ли это законным? Есть ли стандартный алгоритм или что-то еще? Я не знаю, что искать, поэтому я не смог выполнить поиск на этом сайте.

0
nl ja de
Если вы можете преобразовать грамматику в грамматику LL1, вы можете использовать парсер LL1.
добавлено автор John Dvorak, источник

1 ответы

You are looking for parsing algorithm (membership algorithim). Parsing is the process of analyzing a string of language symbols in Formal Languages. And Yes for any context-free-grammar there is a possible parsing algorithm-that is Brute-Force a fundamental algorithm but inefficient, Like phrase-structure parsing, its worst-case complexity is O(n3) (you are to start from here) REFF1 . But if grammar is in standard (restricted) form then more efficient algorithm is possible. there are various parsing algorithms e.g. LL parser and LR parser..etc. REFFRENCE

1
добавлено