|
Труд вопреки насмешкам
|
|
(Почти) компилятор собственного языка программирования17.09.2018, 15:13. Показов 938. Ответов 14
Метки нет (Все метки)
Пока что без дизайнера интерфейсов. Введите последовательность действий и нажмите Ctrl+Enter, и компилятор ее выполнит. Прошу протестировать, от каких выражений программа "падает", а от каких возвращает непонятно что.
Важно: 1. В Дереве действий тип элемента будет различаться по картинке, сейчас вместо картинок используются префиксы: a::Действие c::Условие g::Подусловие (включая "В остальных случаях") / Конец условия / Конец цикла y::Цикл k::Ключевая строка (Вернуть, Продолжить цикл, Завершить цикл) v::Величина q::Комментарий Префиксы необходимо вводить перед каждой строкой, включая первую! 2. Если не указать ключевое слово "Вернуть", вы не увидите ничего, кроме пустоты, хотя действия и выполнятся! 3. В конце строки нет точки с запятой. 4. Это не калькулятор, ввести просто "2 + 2" не прокатит! Бесконечность и неопределенность пока что не сделаны, при делении на 0 получается 0. Функциональность, которая уже работает (жирным написано то, что необходимо скопировать в текстовое поле без изменений, нежирным - описательные слова, вместо которых нужно вставить то, что они описывают, в квадратных скобках - необязательные элементы, в фигурных - обязателен ровно один из элементов): - Объявление величин: [Массив([Индекс1, Индекс2[, ...]])] Тип : Имя[ = Начальное значение]. - Присвоение: Имя величины = Значение. - Условия: {УСЛОВИЕ Условное выражение | ПОДУСЛОВИЕ Условное выражение | В остальных случаях}. Условия должны завершаться строкой "Конец условия". - Циклы: {ПЕТЛЯ | ПОВТОРИТЬ Выражение | ПОВТПОКА Условное выражение | ФОР Величина ПРИН [Начальное значение, Конечное значение{] | )} ШАГ Значение шага}. Циклы должны завершаться строкой "Конец цикла". - Ключевые строки: Вернуть Выражение, Продолжить цикл (под вопросом), Завершить цикл - Комментарии. - Операции (в скобках число параметров, * означает массив параметров): Выбрать случайное(*), Выполнить строку(1-2), Массив одинаковых(2), Цвет(3), Цепь(2), ЯвлМассив(1), ЯвлНс(1), ЯвлПустота(1), ЯвлЧисло(1), Вставить(3), Добавить(2), Найти(2-3), НайтиК(2-3), Сместить(2), Содержится(2), СодержитсяМ(2), Участок(3), Бц(1), Длн(1), Знаг(1), Клвс(2-3), Клэмп(3), Круг(1), Ксс(1), Лгр(2), Макс(2), Макс3(3), МаксМ(1), Мин(2), Мин3(3), МинМ(1), Модуль(1), Мц(1), НЛгр(1), ОКсс(1), ОСнс(1), ОТгс(1), Пвт(2-3), ПвтК(2-3), ПЧсл(1), Слч(1), Смвкд(1), Снс(1), Сравн(2), Сравнить тексты(2), Тгс(1), ЦСлч(1), Эксп(1), Вкс(2-3), Всбк(2-3), Замена(3), ЗвКвч(1), ПСтр(1), Сдп(2), Смв(1), Спп(2), Ссп(2), УКвч(1), УПрб(1), УПрбК(1), УПрбН(1). Экспериментируйте с параметрами как хотите, чем больше вариантов вы протестируете, тем реже будет падать готовая программа! - Операторы: = (в присвоении и в условиях), XOR, ИЛИ, И, мир, бир, мч, бч, нр, <=>, ==, <>, !=, <=, >=, <, >, запятая, скл, пс, +, -, *, /, %, рн, встп, xor, или, и, !. Что НЕ РАБОТАЕТ: - Звезды. - Объекты. - Операторы: +=, -=, *=, /=, ++, --, !! и, возможно, другие. Пробелы ставятся слева и справа от = при присвоении, справа от запятой, между языковыми терминами и между термином и выражением, в остальных случаях не ставятся.
0
|
|
| 17.09.2018, 15:13 | |
|
Ответы с готовыми решениями:
14
Можно ли создать компилятор для своего языка программирования для .NET По русскому названию языка программирования определить английское название этого языка
|
|
Alvin Seville
|
|
| 17.09.2018, 15:22 | |
|
Можно примеры?
0
|
|
|
Труд вопреки насмешкам
|
||||||
| 17.09.2018, 15:31 [ТС] | ||||||
|
Можно.
0
|
||||||
|
Alvin Seville
|
||||||
| 17.09.2018, 15:38 | ||||||
|
А как будет это выглядеть на Вашем языке:
Добавлено через 32 секунды Etyuhibosecyu, а отступы делать можно после ::? Добавлено через 2 минуты Etyuhibosecyu, если можно, то можете с отступами пример переписать? Ничего не понятно.
0
|
||||||
|
Труд вопреки насмешкам
|
||||||||
| 17.09.2018, 15:46 [ТС] | ||||||||
0
|
||||||||
|
Alvin Seville
|
|
| 17.09.2018, 15:51 | |
|
Etyuhibosecyu, нехорошо. Очень нехорошо. Проблемы... Решите их и покажите.
0
|
|
|
Труд вопреки насмешкам
|
|
| 17.09.2018, 15:54 [ТС] | |
|
А то, что я написал, компилируется или нет?
0
|
|
|
Alvin Seville
|
|
| 17.09.2018, 15:59 | |
|
Etyuhibosecyu, я не стал проверять. Не вижу смысла.
0
|
|
|
Труд вопреки насмешкам
|
|
| 17.09.2018, 16:16 [ТС] | |
|
Соколиный глаз, не все же программирование упирается в числа Фибоначчи, правда? Когда выйдет DCASTFPart3, проверите, реально вычислить числа Фибоначчи или нет. А сейчас оцените все, что описано в сообщении #1. Вдруг этот язык все же будет использоваться хоть кем-то... И он напишет какой-либо код, а язык упадет... Помогите мне исключить такую ситуацию!
0
|
|
|
14299 / 9384 / 1353
Регистрация: 21.01.2016
Сообщений: 35,380
|
|||
| 17.09.2018, 16:30 | |||
|
И нафига эти префиксы на каждой строке? Выглядит криво.
1
|
|||
|
Труд вопреки насмешкам
|
|||||||||||
| 17.09.2018, 18:11 [ТС] | |||||||||||
|
Сделал вычисление чисел Фибоначчи отдельной операцией - Фибоначчи(1 параметр). Но выкладывать измененную программу не буду, так как не в этом суть программирования.
Добавлено через 58 минут Сделал еще и рекурсивное выполнение строки операцией Выполнить эту строку(Массив параметров), которая доступна только внутри строки для операции Выполнить строку. Теперь описанный Соколиным глазом в сообщении #4 код выполняется или так:
Выкладывать исправления снова не буду.
0
|
|||||||||||
|
Alvin Seville
|
|
| 17.09.2018, 20:49 | |
|
Etyuhibosecyu, я не вижу смысла в языке, где даже функцию своими руками описать нельзя.
0
|
|
|
14299 / 9384 / 1353
Регистрация: 21.01.2016
Сообщений: 35,380
|
||
| 18.09.2018, 01:10 | ||
|
0
|
||
|
Alvin Seville
|
|
| 18.09.2018, 03:22 | |
|
Etyuhibosecyu, хорошо тестируйте свой компилятор перед выкладыванием примеров, так как «Выложу, но не факт, что скомпилируется.» выглядит очень смешно. Вы не в состоянии сами проверить работоспособность кода?
Что хочу видеть в языке: 1) Нормальная работа с массивами, матрицами 2) Функции и процедуры 3) Рекурсия 4) Замыкания 5) Работа с структурами хотя бы на примитивном как в Си уровне без всяких модификаторов доступа и конструкторов 6) И, разумеется, готовая библиотека подпрограмм и структур (не самому же всегда все с нуля писать) Добавлено через 8 минут И уберите наконец эти ужасные префиксы. Выглядит убого. Добавлено через 1 минуту Выполняйте, не думаю, что есть возражения, Вам же хочется язык сделать нормальный или нет?
0
|
|
|
Неэпический
|
|
| 23.09.2018, 15:33 | |
|
1
|
|
| 23.09.2018, 15:33 | |
|
Помогаю со студенческими работами здесь
15
По русскому названию языка программирования присвоить переменной английское название этого языка
Транслятор собственного языка Интерпретатор собственного языка на Delphi
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|