Лексический анализатор без использования разделителей - 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();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы