Каков самый простой алгоритм синтаксического анализа, который может анализировать код C?

Кто-нибудь знает, что самое слабое семейство широко используемых алгоритмов синтаксического анализа - это синтаксический анализ кода C? То есть, грамматика C LL (1), LR (0), LALR (1) и т.д.? Мне любопытно, потому что в качестве побочного проекта я заинтересован в написании генератора парсера для одного из этих семейств и хотел бы, в конечном счете, проанализировать код C для другого побочного проекта.

Ответ 1

Кажется, что Bison использует парсер LALR (1). Анализаторы LALR более надежны, чем парсеры LL, но также более сложны. Из этого я подозреваю, что LALR (1), вероятно, самый слабый алгоритм синтаксического анализа, который может анализировать код C.

Если вы действительно не настроите свой собственный распознаватель. ANTLR, вероятно, будет вашим лучшим выбором для этого. ANTLR использует алгоритм LL * (который, фактически, LALR).