Я хочу написать лексический синтаксический анализатор для обычного текста. Таким образом, я должен обнаружить следующие символы:!?Простой лексический парсер
1) Word, 2) Количество 3) точка и другие знаки препинания 4) "..." "" "!!!" и т. д.
Я считаю, что для каждого элемента писать условие «если еще» не является тривиальным. Итак, есть ли генераторы конечных автоматов для C#? Я знаю ANTLR и другие, но пока я попытаюсь научиться работать с этими инструментами, я могу написать свой собственный «ifelse» FSM.
я надеюсь, что нашел что-то вроде:
FiniteStateMachine.AddTokenDefinition(":)","smile");
FiniteStateMachine.AddTokenDefinition(".","dot");
FiniteStateMachine.ParseText(text);
Не могли бы вы дать нам несколько образцов текстового потока, который вы планируете, возможно, захотите разобрать. Это поможет решить, в каком направлении вы должны идти. – kingchris
@kingchris обычный текст, как статья на codebetter, мой вопрос, твит ... – Neir0
Я предлагаю использовать регулярные выражения. Что-то вроде «[a-zA-Z \\ -] +» будет забирать слова (a-z и тире), а «[0-9] * (\\. [0-9] +)?" будут получать номера (включая десятичные числа). Точки и т. Д. Похожи друг на друга - «[! \\. \\?] +» - и вы можете просто добавить любую пунктуацию, которая вам нужна, в квадратных скобках (экранирование специальных символов регулярных выражений с помощью \\, которое оценивается как единый \ после C# стирание строки). Сообщите мне, если это кажется интересным; если это так, я верну его к полному ответу. Ознакомьтесь с [Учебное пособие Microsoft по регулярному выражению] (http://msdn.microsoft.com/en-us/library/ms228595%28v=VS.80%29.aspx) – GGulati