Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.12.2017
Сообщений: 20

Разработать лексический анализатор, получающий на вход строку и выделяющий из нее лексемы

25.01.2018, 09:38. Показов 3139. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые пользователи форума , помогите разработать анализатор на конечном автомате.
Лексемы: Десятичные числа((код 1), арифметические операции (код 2), идентификаторы (код 3) и присваивание(код 4)
Образец работы программы анализатора:
Исходная строка:67*y-е62*7
Массив лексем:
1 67
2 *
3 y
2 -
3 e62
2 *
1 7
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2018, 09:38
Ответы с готовыми решениями:

Лексический анализатор, у которого на входе строка, и выделяет из этой строки лексемы
Здравствуйте, уважаемые , помогите мне разработать анализатор на конечном автомате. Лексемы: Восьмиричные числа((код 1), арифметические...

Разработать лексический анализатор
Разработать лексический анализатор lex для поиска в строках произвольного входного текста любых слов, состоящих из латинских букв, где все...

Нужно разработать лексический анализатор
Нужно разработать лексический анализатор, получающий на вход строку и выделяющий из неё лексемы Лексемы записываются в формате: код...

1
 Аватар для Faiotti
29 / 30 / 15
Регистрация: 24.01.2018
Сообщений: 132
25.01.2018, 10:10
Лучший ответ Сообщение было отмечено avanbnv как решение

Решение

Вот накатал. Даже перевыполнил план. Ведь по вашему ТЗ (с вашими волшебными "код 2") и пробелы и знаки действий можно считать символами, применяемыми в идентификаторах

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var str = "67*y-е62*7";
var state = 0;
var lexes = new List<string>();
var lex = "";
for (int i = 0; i < str.Length; i++)
{
    if (str[i] != '+' && str[i] != '-' && str[i] != '/' && str[i] != '*' && str[i] != '=')
    {
        lex += str[i];
        state = 0;
    }
    else
    {
        if (state == 1) // опять знак арифметического действия?
        {
            MessageBox.Show("Ошибка. Номер в строке: " + (i + 1));
            //
            return;
        }
        lexes.Add(lex.Trim());
        lex = "";
        lexes.Add(str[i].ToString());
        state = 1;
    }
}
lexes.Add(lex.Trim());
 
var logStr = "";
foreach (var sLex in lexes)
{
    logStr += "|" + sLex + "|\r\n";
}
MessageBox.Show(logStr);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.01.2018, 10:10
Помогаю со студенческими работами здесь

Разбить строку на лексемы и вывести лексемы в обратном порядке.
Ребята, помогите. Получил такое задание: Напишите программу, которая вводит строку текста, разбивает ее на лексемы и выводит лексемы в...

лексический анализатор на С++
Написать лексический анализатор на С++: разделители: , . ; бинарные операции: + - * / унарные операции: - знак числа ...

Лексический анализатор
Доброго времени суток! Помогите пожалуйста с лабораторной по CLISP: Требуется написать лексический анализатор, на вход которого...

Лексический анализатор
Написал программу, я надеюсь, лексического анализатора для конкретного куска программы. В программе я из текстового файла считывал текст...

Лексический анализатор
Помогите написать лексический анализатор.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru