Лексический анализатор без использования разделителей - C#
Формулировка задачи:
Ребята, привет! Мне очень сильно нужна ваша помощь. Мне нужно разработать программу – сканер для выделения лексем из строки текста, содержащей целочисленные константы в десятичной системе счисления, однобуквенные идентификаторы и знаки операций - * / +-. Мне её уже делали:
Но мне нужно эту же программу сделать без разделителей. В ответе у меня должна получится следующая таблица лексем:
Лексема Тип лексемы значение.
Помогите пожалуйста!!! Я уже всю голову сломала. А чуть не забыла, строка должна вводиться с клавиатуры. Заранее большое спасибо....
//твоя строка
string stroka = "123+17839=234876D176";
//создаешь массив из разделителей. сюда же можно и буквы, и т.д.
char[] separator = new char[4 { '+', '=', 'D','-' };
//дальше создаешь массив, куда сохраняешь эти числа
string [] chisla;
chisla = stroka.Split(separator); //это твою строку разбивают с помощью указанных тобой разделителей
//ну и вывод из массива
foreach (string o in chisla)
Console.WriteLine(o + " ");
Console.ReadLine();Решение задачи: «Лексический анализатор без использования разделителей»
textual
Листинг программы
var stroka = Console.ReadLine();
var Signs = "*/+-";
var Letters = "abcdefghijklmnopqrstuvwxyz";
var Digits = "0123456789";
var operations = stroka.Split((Letters + Digits).ToArray(), StringSplitOptions.RemoveEmptyEntries);
var identifiers = stroka.Split((Signs + Digits).ToArray(), StringSplitOptions.RemoveEmptyEntries);
var numbers = stroka.Split((Signs + Letters).ToArray(), StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("Операции: " + String.Join(",", operations));
Console.WriteLine("Идентификаторы: " + String.Join(",", identifiers));
Console.WriteLine("Числа: " + String.Join(",", numbers));
Console.ReadKey();