Какой парсер: EBNF, Custom, Parser Combinator (и их производные)? - PullRequest
2 голосов
/ 04 декабря 2010

Ранее я разрабатывал пользовательские парсеры, играл с парсерами на основе bnf, кратко познакомился с комбинаторами парсеров и прочитал о производных комбинаторов парсеров.

Мой довольно широкий вопрос: как вы решаете, какая стратегия / технология верна?Очевидно, что в этом есть прагматические элементы, то есть, если вы знаете только собственные парсеры и время против вас, то, возможно, ваш выбор ограничен или, возможно, если язык (и сообщество) не предоставляют инструменты / поддержку, и вы в конечном итоге получитенаписать инфраструктуру самостоятельно (что, конечно, возможно), но, в принципе, есть какие-то «практические правила», касающиеся самих стратегий / технологий синтаксического анализа, которые помогают принять решение.

TIA

Simon

1 Ответ

2 голосов
/ 16 июня 2012

Я бы порекомендовал следующее:

  1. Проверьте, может ли ваш целевой язык быть эффективно описан с помощью грамматики LR (1).
  2. Если да, используйте один из множестваинструменты, такие как YACC.Эти инструменты хороши, и вам нужно найти причину, по которой вы не хотите их использовать.
  3. Если нет, то поищите конкретные книги или напишите свой собственный анализатор.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...