С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/34: Рейтинг темы: голосов - 34, средняя оценка - 4.53
1 / 1 / 0
Регистрация: 09.04.2015
Сообщений: 21

Компилятор для Pascal на языке C#

17.12.2015, 16:13. Показов 7113. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток
Задача такова - написать компилятор Паскаля на шарпе
Я вроде как разобрался, что компилятор обязательно включает в себя лексический и синтаксический анализатор, иначе нелогично - собирать то, что не проверено и может быть неправильно.
То есть мы набираем простейшую программу на языке Паскаль в какой-нибудь текстбокс в форме, проверяем его анализаторами, а потом компилируем и получаем результат. По крайней мере, в голове это так выглядит. При всем при этом здесь куда-то вставляется магазинный автомат. Понятия не имею что это, но разобраться надо позарез.

- Подскажите пожалуйста какой-нибудь тутор, видео, урок или статью, чтобы хотя бы приблизиться к реализации задуманного
- Или по частям - что такое магазинный автомат и как это связывается с построением самого компилятора, как построить анализаторы и так далее
- Если вы знаете примеры, то прошу вас ими поделиться
Заранее благодарю!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.12.2015, 16:13
Ответы с готовыми решениями:

Написать компилятор на языке C++/C# для программы на PASCAL
1. Произвести анализ заданного программного фрагмента на языке PASCAL и выделить все типы имеющихся в нем лексем. 2. Сформировать...

ACP Pascal – автоматическое создание исходных кодов программ для решения массивов на языке Pascal
ACP Pascal (Automatic Creation of Programs Pascal) – программа для автоматического создания исходных кодов программ на языке Pascal,...

Компилятор Pascal для Mac OS
Подскажите компилятор Pascal для Mac OS Мне надо компилировать не только сами программы, но и модули Поставил Windows 8 с помощью...

13
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
17.12.2015, 18:42
jack_sparrow228,
Лексический анализатор для паскаля недавно писал здесь.
0
1 / 1 / 0
Регистрация: 09.04.2015
Сообщений: 21
17.12.2015, 19:29  [ТС]
Цитата Сообщение от Storm23 Посмотреть сообщение
jack_sparrow228,
Лексический анализатор для паскаля недавно писал здесь.
О, я вашу тему как раз уже пробовал использовать, только у меня получилось всего лишь нажать на кнопку, указать путь для абс файла и все. Может я делаю что-то не так? Сама программа запускается, все работает, ошибок не выдает. Или я просто не понял принцип ее работы?
Подскажи пожалуйста
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
17.12.2015, 20:25
Цитата Сообщение от jack_sparrow228 Посмотреть сообщение
Сама программа запускается, все работает, ошибок не выдает. Или я просто не понял принцип ее работы?
И вы собрались писать компилятор?
1
1 / 1 / 0
Регистрация: 09.04.2015
Сообщений: 21
17.12.2015, 21:08  [ТС]
Цитата Сообщение от Storm23 Посмотреть сообщение
И вы собрались писать компилятор?
Я же сказал, что меня интересует. В том числе досконально: как, зачем и почему.
Программы я не первый раз пишу. Я просто не знаю как работает ваш код, объясните, пожалуйста. Как хотя бы нормально запустить у себя, чтобы изучить его?
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
18.12.2015, 12:45
jack_sparrow228,
По программе. Там в форме есть метод Parse:
C#
1
2
3
4
5
6
7
        private void Parse(string file)
        {
            var text = File.ReadAllText(file);
            var lexer = new PascalLexer();
            foreach(var lex in lexer.Parse(text))
                Console.WriteLine(lex);
        }
Он читает текстовый файл, и разбивает его на лексемы. Лексемы возвращает метод lexer.Parse(text). В данном случае лексемы просто выводятся в консоль (там и нужно смотреть результат работы - в окошке Output в VS).
Данный лексер не полный. Он не различает операторов, скобок и разделительных знаков (для него это все Separators). То есть там еще нужна небольшая надстройка, которая будет различать эти лексемы.

Далее, в целом: компиляторы - очень сложная часть программирования. Как теоретически, так и технически.
Как минимум вам нужно знать теорию автоматов, теорию грамматик, физическое устройство памяти, CPU, OS, ассемблер.
Классическая книга по компиляторам (где все вопросы так или иначе затронуты) - Ахо, Ульман. Компиляторы: принципы, технологии и инструменты (в простонародье также называемая "книга дракона").
0
Заблокирован
18.12.2015, 16:32
Storm23,

Не по теме:

к слову сказать я тоже не очень понял ваш код, там же Windows Forms приложение (судя по форме), тогда причем тут консоль?

0
18.12.2015, 17:28

Не по теме:

Цитата Сообщение от Volrajas Посмотреть сообщение
к слову сказать я тоже не очень понял ваш код, там же Windows Forms приложение (судя по форме), тогда причем тут консоль?
Ну а куда выводить лексемы? Там вывод в консоль просто для отладки. Лексемы это же не окончательный результат работы. Там предполагается дальнейшая обработка. А для демонстрации промежуточного результата - вывод в консоль.
А WinForms - для того, что бы был диалог открытия файла OpenFileDialog.

0
Заблокирован
18.12.2015, 17:31
Цитата Сообщение от Storm23 Посмотреть сообщение
Ну а куда выводить лексемы?

Не по теме:

ну там я не знаю... в файл не? или раз форма то допустим в какой нибудь RichTextBox


Цитата Сообщение от Storm23 Посмотреть сообщение
Там вывод в консоль просто для отладки. Лексемы это же не окончательный результат работы. Там предполагается дальнейшая обработка. А для демонстрации промежуточного результата - вывод в консоль.

Не по теме:

нет, ну просто какая нафиг консоль если это Windows Forms? ее же не видно... где эти результаты по твоему должны отображаться, если нету консоли по сути?

0
18.12.2015, 17:48

Не по теме:

Цитата Сообщение от Volrajas Посмотреть сообщение
ну там я не знаю... в файл не?
не
Цитата Сообщение от Volrajas Посмотреть сообщение
нет, ну просто какая нафиг консоль если это Windows Forms? ее же не видно... где эти результаты по твоему должны отображаться, если нету консоли по сути?
Консоль в WinForms есть, и отображается она в окошке Output в VisualStudio:

0
Заблокирован
18.12.2015, 18:05
Цитата Сообщение от Storm23 Посмотреть сообщение
Консоль в WinForms есть, и отображается она в окошке Output в VisualStudio:

Не по теме:

хмм а у меня такого нет... vs 2015

0
18.12.2015, 18:13

Не по теме:

Цитата Сообщение от Volrajas Посмотреть сообщение
хмм а у меня такого нет... vs 2015
Отладка -> Окна -> Вывод

0
Заблокирован
18.12.2015, 18:23
Цитата Сообщение от valera_21 Посмотреть сообщение
Отладка -> Окна -> Вывод

Не по теме:

нету там такого, кажется я понял это только в режиме отладки видно

0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
18.12.2015, 18:57
Цитата Сообщение от Volrajas Посмотреть сообщение
нету там такого, кажется я понял это только в режиме отладки видно
Все там есть, и видно в любом режиме.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.12.2015, 18:57
Помогаю со студенческими работами здесь

Компилятор для языка Pascal (LL-разбор)
Ищу компилятор для языка Pascal c LL-разбором. Есть у кого-нибудь?

Как назывался компилятор типаBorland Pascal только для C++
Там такое же синие окошечко было?

Где можно скачать компилятор Free Pascal для винды?
С оффсайта выдает ошибку, перед гуглом решил сюда обратиться,может кто то конкретно знает?

Разработать программу для вычисления на языке pascal
Разработать программу для вычисления на языке pascal: 1) значения заданного арифметического выражения; 2) значения заданной функции;...

Составить условия на языке Pascal для утверждений
Немного траблы с заданием в паскале- 1. Составить условия алгоритмично на языке Pascal для утверждений (согласно вашего варианта): ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru