Выражение для операторов .NET - PullRequest
1 голос
/ 13 мая 2011

Я хочу внедрить онлайн-редактор для моего личного использования, так что я должен проверить, что утверждения , которые я пишу в своем онлайн-текстовом редакторе, имеют право форма или нет .

Я хочу проверить форму операторов с помощью регулярных выражений, я нашел хорошее выражение для IF-оператор здесь и это

if\s*\(((?:(?:(?:"(?:(?:\\")|[^"])*")|(?:'(?:(?:\\')|[^'])*'))|[^\(\)]|\((?1)\))*+)\)\s*{((?:(?:(?:"(?:(?:\\")|[^"])*")|(?:'(?:(?:\\')|[^'])*'))|[^{}]|{(?2)})*+)}\s*(?:(?:else\s*{((?:(?:(?:"(?:(?:\\")|[^"])*")|(?:'(?:(?:\\')|[^'])*'))|[^{}]|{(?3)})*+)}\s*)|(?:else\s*if\s*\(((?:(?:(?:"(?:(?:\\")|[^"])*")|(?:'(?:(?:\\')|[^'])*'))|[^\(\)]|\((?4)\))*+)\)\s*{((?:(?:(?:"(?:(?:\\")|[^"])*")|(?:'(?:(?:\\')|[^'])*'))|[^{}]|{(?5)})*+)}\s*))*;

Теперь я ищу остальную часть выражения, например:

  • для
  • , а
  • определение переменной (например: int xxx string xxx)
  • корпус переключателя
  • new (объект: класс, перечисление)
  • Еогеасп

Пожалуйста, don't say that it's impossible, я могу справиться со своей проблемой с regular expression и IF expression Я упоминал выше, что отлично работает , и мне нужна такая вещь для остальных

Заранее спасибо

Ответы [ 3 ]

5 голосов
/ 13 мая 2011

Даже если это не прямой ответ на ваш вопрос - я настаиваю , чтобы вы использовали ANTLR вместо

1 голос
/ 13 мая 2011

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

0 голосов
/ 13 мая 2011

Мой опыт использования регулярных выражений для анализа заключается в том, что они применимы только в том случае, если:

  • Вы готовы сами писать и поддерживать их
  • Вы можете признать, что они не совсем верны

Поскольку вы просите о помощи, вы, вероятно, не соответствуете первому критерию, поэтому я не могу рекомендовать их вам.

P.S. Да, я иногда использую их сам в быстрых и грязных ситуациях анализа. Они бесценны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...