Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 17

Лексический распознаватель для языка Pascal

23.12.2018, 12:58. Показов 2132. Ответов 10

Студворк — интернет-сервис помощи студентам
Нужно написать лексический распознаватель на джава для языка паскаль
Входная программа:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program  com1;
 var t, i: integer;
 begin
  t:=$3;
  for i:=1 to 100 do
  begin
       if t<$a then
        begin
         repeat
               t:=t+1;
         until t>$f
         end;
  end;
  writeln(t);
 end.
Моя программа класс Compiler1:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package compiler1;
 
import java.io.*;
import java.nio.file.*;
import lexer.*;
 
public class Compiler1 {
 
    static String readFile(String fileName) throws IOException {
        byte[] bytes = Files.readAllBytes(Paths.get(fileName));
        return new String(bytes);
    }
 
    public static void main(String[] args) throws IOException {
 
        String file;
        file = readFile("Program.txt");
 
        Lexer lex = new Lexer(file);
 
    }
 
}
Класс Lexer:
Java
1
2
3
4
5
6
7
8
9
10
11
12
package lexer;
 
import java.util.regex.Pattern;
 
public class Lexer {
 
    public Lexer(String file) {
 
        Pattern pattern = Pattern.compile("\\s*(\\s|&|:| |=|,|!|<|>|\\.)\\s*");
        String[] words = pattern.split(file);
}
}
Делит программу на отдельные слова
Что делать дальше не понимаю
В интернете абсолютно ничего полезного не могу найти
Сказали использовать регулярные грамматики или дка, но что тогда должно быть на выходе
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.12.2018, 12:58
Ответы с готовыми решениями:

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

Лексический анализатор языка С
Доброго времени суток, пишу лексический анализатор языка Си. По заданию нужно распределить числа, строчные и символьные...

Разработайте лексический анализатор для языка программирования C--
Лексемы, допустимые в языке: letter ::= a | b | ... | z | A | B | ... | Z digit ::= 0 | 1 | ... | 9 char ::= \' | &quot; | \n |...

10
20 / 19 / 4
Регистрация: 22.03.2018
Сообщений: 701
23.12.2018, 13:02
Условие скинь по которому работает программа ) так мне будет проше и я смогу написать )
0
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 17
23.12.2018, 13:07  [ТС]
Какое условие? Что ты имеешь в виду?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
23.12.2018, 13:48
https://github.com/karl82/pasc... arser.java
первая ссылка в гугле есличо
0
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 17
23.12.2018, 13:55  [ТС]
Parser это синтаксический анализатор, а мне нужен лексический

Добавлено через 17 секунд
xoraxax, Parser это синтаксический анализатор, а мне нужен лексический
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
23.12.2018, 14:40
Цитата Сообщение от Elephant212 Посмотреть сообщение
Parser это синтаксический анализатор, а мне нужен лексический
объясни разницу в двух словах
0
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 17
23.12.2018, 20:27  [ТС]
xoraxax, лексический на выходе должен создавать таблицу идентификаторов, а синтаксический сообщать об ошибках в программ
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2773 / 491
Регистрация: 28.04.2012
Сообщений: 8,760
23.12.2018, 20:32
Цитата Сообщение от xoraxax Посмотреть сообщение
объясни разницу в двух словах
Лексический анализатор разбивает текст на лексемы, синтаксический — преобразует лексемы в абстрактное синтаксическое дерево.

Добавлено через 1 минуту
Цитата Сообщение от Elephant212 Посмотреть сообщение
Сказали использовать регулярные грамматики или дка
Регулярная грамматика != регулярное выражение, если ты вдруг их перепутал.

Цитата Сообщение от Elephant212 Посмотреть сообщение
но что тогда должно быть на выходе
Список лексем.

Добавлено через 18 секунд
Цитата Сообщение от Elephant212 Посмотреть сообщение
лексический на выходе должен создавать таблицу идентификаторов, а синтаксический сообщать об ошибках в программ
Нет.
0
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 17
23.12.2018, 20:39  [ТС]
korvin_, воооот, спасибо, а как использовать эти регулярные выражения для программы, я не понимаю
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
23.12.2018, 20:56
Цитата Сообщение от korvin_ Посмотреть сообщение
Лексический анализатор разбивает текст на лексемы, синтаксический — преобразует лексемы в абстрактное синтаксическое дерево.
ну в общем-то одно другому не мешает
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2773 / 491
Регистрация: 28.04.2012
Сообщений: 8,760
23.12.2018, 21:32
Цитата Сообщение от xoraxax Посмотреть сообщение
ну в общем-то одно другому не мешает
Ну, понятно, что каждый делает как ему удобно в зависимости от самых разных факторов, и лексер может как выдавать поток нетипизированных токенов (и переложить работу по их классификации на парсер), так и полностью их классифицировать согласно правилам языка (оставляя за парсером только задачу формирования дерева). А во всяких лиспах вообще принято другое разделение: reader -> evaluator(interpreter/compiler), т.к. грамматика очень простая, и конкретный синтаксис почти соответствует АСТ без необходимости в сложном парсере. При этом, что и reader и evaluator можно дополнять своими функциями. А Форт так ещё проще. Но каноничное разделение по ответственности такое, как я описал.

Цитата Сообщение от Elephant212 Посмотреть сообщение
а как использовать эти регулярные выражения для программы, я не понимаю
При чём тут регулярные выражения? Вообще строить лексер на регулярках (регулярных выражениях) — так себе решение.

Я же говорил о
Цитата Сообщение от Elephant212 Посмотреть сообщение
Сказали использовать регулярные грамматики
https://en.wikipedia.org/wiki/Regular_grammar — это довольно общий термин, поэтому, мне не очень понятно, что имелось в виду под требованием их использования. Возможно, что-то типа такого: https://www2.seas.gwu.edu/~hch... pascal.pdf
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2018, 21:32
Помогаю со студенческими работами здесь

Построить распознаватель языка с помощью стека
Приветствую, преподаватель задал задачку, сказал решение маленькое, порядка строк 8-10. Сам не очень программирую, есть предложения с чего...

Распознаватель языка слова / небольшого куска текста
Привет! Такой вопрос: есть произвольный текст, как определить язык, на котором этот текст написан? ...

Лексический анализатор языка лисп
нужно написать лексический анализатор языка лисп

Реализовать лексический анализатор языка
Составить автоматную грамматику и на её основе реализовать лексический анализатор языка, цепочки которого имеют вид, указанный в задании....

Составить автоматную грамматику и на её основе реализовать лексический анализатор языка
Если есть люди,которые реально шарят в с++,может,смогут помочь,в общем,задачка такова: Составить автоматную грамматику и на её основе...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru