|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
А нужен ли компилу лексер?19.04.2011, 11:17. Показов 2922. Ответов 20
Метки нет (Все метки)
Зачем нужен лексер? Вроде бы для перобразования исходного текста в последовательность внутреннего представления лексем. А почему бы не ввести всостав среды разработки редактор сразу представления, являющегося входным для следующего этапа после лексическго анализа? Вот на zx-spectum 48K например программы набирались сразу в байт-коде, являвшемся внутренним представлением бейсика, а потом этот байт-код интерпретировался. И каждый оператор набирался за одну кнопку, а обозначался одним байтом. Ну так почему бы отсюда и не пойти? При наборе строки сразу кодировать операторы и явные константы, распределять адреса переменных, парсить выражения, а компилу давать уже готовые лексемы вместо букв? Почему в большинсве случаев идут по пути набора plain-текста? Причём, редакторы тоже явно умеют разбирать исходники, что видно по подсветке синтаксиса.
0
|
|
| 19.04.2011, 11:17 | |
|
Ответы с готовыми решениями:
20
Калькулятор (Лексер + Парсер)
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 19.04.2011, 13:27 [ТС] | |
|
При чём здесь совок? Спектрум - английская машина. Правда, у меня был её сокофицированный вариант под названием Delta C, но проги для спектрума её признавали за спектрум. И при чём здесь астрал? В студии пробовал исходник на плюсах набрать? Встроенный редактор подсвечивает синтаксис, значит вполне в сосоянии разлобрать исходник. Или лазарус:
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 19.04.2011, 13:39 [ТС] | |
|
Подсветка синтакисиа видан невооружённым глазом, значит и здесь редактор исходника способен его разобрать. А спектрумовские проги я грузил в редактор кода и там ясно был виден байт-код, в котором каждый многобуквенный оператор обозначался одним байтом. И я даже иногда правил этот код прямо в редакторе кода, подглядывая коды операторов по справочнику, а чаще по памяти, а при загруке этих файлов обычным мергом коды снова выглядели как искходник на бейсике, но уже с дургими операторами. Причём, я мог добиться, чтоб эти проги вгылдяели нечитабельно и при повторном редактировании строк в редакторе бейсик-программ приходили в полную негодность, но при загрузке лоадом запускались, сохраняя тип бейсик-файлов. И мог наоборот прочитать аналогично защищённые, но чужие проги, внести свои изменения прям так, не снимая защиты, или снять защиту и загрузить потом в редактор бейсика мергом. Сейчас я уже не помню ни конкертных кодов, ни структуры кода и не смогу прямо в байт-коде ничего написать, но весной 1995-го умел. Вопрос: почему по этому пути пошёл одни Клайв Синкелр? В мануале было прямо сказано, что в редактор бейсика байт-код генерит налету при наборе каждой строки. Если даже спектрум с этим справлялся (меньшше четырёх мегагерц, 980 000 кажется операций в секунду), то почему бы не положить это в основу какой нибудь нормальной среды разработки? Спектрум имел контекстную раскладу клавы, когда нужен опратор, то нажатие например, p давло сразу PRINT, l - LET, i - INPUT и так далее.
0
|
|
|
111 / 112 / 18
Регистрация: 11.03.2011
Сообщений: 421
|
|
| 03.05.2011, 03:14 | |
|
оно-то так...
с таким раскладом может сразу бинарники писать?)) маленькие программы может и можно накидать вот так вот и скормить парсеру, но для больших проектов это просто жуть. ломать голову, сидя за справочником, да еще и различать сущности, записанные в логической структуре (как правило это дерево), которые все похожи... по моему более человекоподобные слова куда гораздо приятнее и понятнее. в смысле что я хотел сказать - не всегда лексер генерит хоть сколько-то бы ни было понятные человеку сущности Добавлено через 6 часов 5 минут кстати, относительно лексеров и парсеров, развивая тему. HTML, php ведь не обрабатываются лексером например, а сразу парсятся. это не компиляция конечно, а интерпретация, тем не менее, вэб-программисты пишут исходник уже сразу лексемами, если можно так выразиться.
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||||||||||||||||||||||||||
| 03.05.2011, 05:50 [ТС] | ||||||||||||||||||||||||||||||
0
|
||||||||||||||||||||||||||||||
|
111 / 112 / 18
Регистрация: 11.03.2011
Сообщений: 421
|
|||
| 03.05.2011, 21:53 | |||
|
в результате она разложится на две (теоретически, на практике на несколько команд больше) я в бэйсике код давным давно тоже набирал, правда на Робике (поддержим отечественного производителя ).и справочник по языку тогда влазил в тетрадку на 12 страниц с примерами и пометками, и с подробным описанием. может я не правильно понял, но идея темы состоит в том, что лексер фактически переливает наш исходник "из пустого в порожнее" и нужно ли оно нам? может сразу писать лексемы и отдавать парсеру?))) и еще, это касательно большинства современных компиляторов мысли?)
0
|
|||
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||
| 03.05.2011, 21:59 | ||
|
то о чем уже пошла речь - это уже компилятор о чем говорит автор - ниасилил
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||
| 04.05.2011, 05:20 [ТС] | |||
|
0
|
|||
|
111 / 112 / 18
Регистрация: 11.03.2011
Сообщений: 421
|
||||
| 04.05.2011, 17:21 | ||||
|
это ведь невероятно гибкий и уже готовый формат, хотя во многом и неудобный. как там золотое правило гласит: "Разделяй и властвуй" тем более, что есть редакторы, в которых анализ производится "на лету". это касается не только подсветки синтаксиса, но и поиска ошибок в коде, различных Tool Tip-ов и т.д. и т.п. - фич на самом деле масса, они ведь опираются как раз на лексер по идее, на "понимание" написанного текста.
0
|
||||
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
| 04.05.2011, 19:55 | |
|
0
|
|
|
|
|
| 18.10.2023, 15:17 | |
|
taras atavin, кстати да, тоже только что взбрела эта идея.
Почему бы не хранить исходники во внутреннем лекс-коде, который способен "делексироваться" обратно в текст программы. В отличие от объектного кода, dll или exe, поток токенов можно практически без потерь преобразовать обратно(наверное потеряются лишь директивы препроцессора(если это язык си), комментарии, и отступы в коде - но это мелочи)
0
|
|
|
14292 / 9377 / 1352
Регистрация: 21.01.2016
Сообщений: 35,337
|
|
| 18.10.2023, 15:39 | |
|
Kuzia domovenok, открой для себя C# и Java. Байт-код там на ура назад в исходники перегоняется.
0
|
|
|
|
|||||||||||
| 18.10.2023, 20:19 | |||||||||||
|
Usaga, я не про декомпиляцию исходников, я про хранение их в виде абстрактной цепочки токенов языка программирования до какой-либо интерпретации-компиляции их в код
То есть итоговый код все равно не исполнить даже на вирт.машине, его в любом случае предстоит парсить и генерить исполняемый код
0
|
|||||||||||
|
14292 / 9377 / 1352
Регистрация: 21.01.2016
Сообщений: 35,337
|
|
| 19.10.2023, 02:51 | |
|
Kuzia domovenok, ну, я и говорю: смотри С# и Java. Там как раз байт-код JIT'от в исполняемый перегоняется.
0
|
|
|
|
|
| 19.10.2023, 13:33 | |
|
Usaga, байт код это уже исполнямый виртуальной машиной код, а токены это токены
токены однозначно привязаны к используемой лексике исходной программы, байт код - что-то вроде ассемблера, просто он для более умной, чем железный процессор, машины java
0
|
|
|
14292 / 9377 / 1352
Регистрация: 21.01.2016
Сообщений: 35,337
|
|
| 20.10.2023, 05:30 | |
|
Kuzia domovenok, и в чём смысл держать в бинарнике лексемы исходника? Польза практическая в чём?
0
|
|
|
|
|
| 20.10.2023, 10:12 | |
|
Usaga, так редактировать в IDE текст чтобы. Экзешник тоже будет, лексемы это не для запуска из них программы а для запуска из них визуального редактора который преобразует их в текст для программиста
0
|
|
|
14292 / 9377 / 1352
Регистрация: 21.01.2016
Сообщений: 35,337
|
|
| 20.10.2023, 10:28 | |
|
Kuzia domovenok, зачем, бога ради?
0
|
|
|
14292 / 9377 / 1352
Регистрация: 21.01.2016
Сообщений: 35,337
|
|
| 21.10.2023, 10:05 | |
|
vantfiles, я понимаю, что он облегчается. Но это же побочный эффект задумки. А основной смысл какой может быть? Пихать, по сути, исходники в исполняемые файлы, раздувая их размер, чтобы что?
Я понимаю скриптовые языки. Там исходники распространяются потому, что нет стадии компиляции. А тут и компиляция, и код поставляется. Потребительские качества такого бинарника чем и для кого улучшаются? Точно не для конечного пользователя.
0
|
|
| 21.10.2023, 10:05 | |
|
Помогаю со студенческими работами здесь
20
СМА Gorenje WA61101/02, Нужен номинал резистора, Нужен номинал резистора СМА Indesit WIN602(EU), нужен дамп прошивки или конфиг, не включается, нужен дамп прошивки или конфиг СМА Whirlpool AWM245 нужен номинал R6, Whirlpool AWM245 нужен номинал R6 Нужен ли let? Нужен ли он? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|