Лексический анализатор без использования разделителей - 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д