То, когда использовать парсер-генератор, когда regex, достаточно?

  1. ?? - объединение использования оператора
  2. ( директива оператора / ) - большое ключевое слово, которое может использоваться для больше, чем просто вызова, Располагает
  3. только для чтения - должен использоваться больше
  4. netmodules - слишком плохо в Visual Studio
  5. нет никакой поддержки

6
задан Ira Baxter 12 September 2009 в 05:40
поделиться

3 ответа

Ну, простое правило Практический опыт: если грамматика данных, которые вы пытаетесь проанализировать, регулярная , используйте регулярные выражения. Если это не так, регулярные выражения могут по-прежнему работать (поскольку большинство механизмов регулярных выражений также поддерживают нерегулярные грамматики), но это может быть болезненно (сложная / плохая производительность).

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

7
ответ дан 8 December 2019 в 18:39
поделиться

Regex is a parser-generator.

From wikipedia:

Regular expressions (abbreviated as regex or regexp, with plural forms regexes, regexps, or regexen) are written in a formal language that can be interpreted by a regular expression processor, a program that either serves as a parser generator or examines text and identifies parts that match the provided specification.

If you're going over a list that only needs to be gone over once, then save the list to a file and read it from there. If you're checking things that are different every time, use regex and store the results in an array or something.

It's much faster than you would assume it to be. I've seen expressions bigger than this post.

Adding that you can nest as much as you'd like, in whatever language you decide to code it in. You could even do it in sections, for maximum re-usability.

4
ответ дан 8 December 2019 в 18:39
поделиться

Как указывает Sneakyness, у вас может быть большое и сложное регулярное выражение, которое на удивление мощно. Я видел несколько таких примеров, но простые смертные не обслуживали ни одного. Даже использование Expresso только помогло; все еще было трудно понять и рискованно модифицировать. Так что, если вы не специалист по Grep, я бы не рекомендовал это направление.

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

]
2
ответ дан 8 December 2019 в 18:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: