PC-01 Lviv http://pc01.lviv.ua/forum/ |
|
DprToLvt (PasToLvt) http://pc01.lviv.ua/forum/viewtopic.php?f=20&t=153 |
Page 13 of 15 |
Author: | Zelya [ 03 Dec 2012, 14:19 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
QDialogs - оно самое. Ищите замену, вроде обычный Dialogs или что-то такое. |
Author: | MARAT_BEST [ 03 Dec 2012, 14:23 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Quote: Quote: у вас гдето (возможно при компиляции библиотеки, в uses попала ссылка на данный DLL)
Code: uses Classes, Forms, Windows, SysUtils, Graphics, IdGlobal, QDialogs, UnitMain in 'UnitMain.pas', EkranLVUnit in 'EkranLVUnit.pas' {MainFormEmu}, RegViewLVUnit in 'RegViewLVUnit.pas' {RegViewForm}, I8080 in 'I8080.pas', I8080proc in 'I8080proc.pas', ExecuteLV in 'ExecuteLV.pas', Delays in 'Delays.pas', SAStypes in '..\..\Poject\UNITdelphi\SAStypes.PAS', SASFiles in '..\..\Poject\UNITdelphi\SASFiles.pas', SASstring in '..\..\Poject\UNITdelphi\SASstring.PAS', Memory_ in 'Memory_.pas', FormatLVT in 'FormatLVT.pas', FormatE3 in 'FormatE3.pas', FormatEMU in 'FormatEMU.pas', SASChar in '..\..\Poject\UNITdelphi\SASChar.PAS', FormatSAV in 'FormatSAV.pas';В УПОР НЕВИЖУ ! Я так подозреваю может из-за примениея типа данных INT64. EkranLVUnit.pas RegViewLVUnit.pas ..... |
Author: | sas9568635 [ 03 Dec 2012, 14:39 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Quote: на вскидку QDialogs ? и плюс гдето может быть в следующих модулях также в uses....
Позже попробую убрать QDialogs, но раз я его когда-то (уже не помню зачем) вставил - значит он нужен !
|
Author: | sas9568635 [ 19 Dec 2012, 17:21 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Уважаемые форумчане! Уже не знаю как и вопрос задать... а также незнаю что искать:-) вообщем... Каким образом можно быстро и грамотно «распознавать» текст (код) языка паскаля (дельфи)?... т.е. я было начал писать подобное... если «program» тогда ... если «uses» тогда ... если «Var» тогда... пробелы, табы, вводы - пропустить... «вычислить» переменную.... пробелы, табы, вводы, пропустить... ожидать... либо запятую... либо двоеточие... о господи:-), если еще одна переменная опять повторить - пробелы, табы, вводы пропустить... а предыдущие переменные «помнить» так как их тип будет указан после двоеточия... а также после указания типа возможно еще «=значение» и т. д. Вообщем, у меня началось головокружение... Вот и подумал, может существует какой-то более простой способ «распознавания» этого всего страхомудия!?.. иль кто подскажет что мне необходимо искать в инете для реализации этого?!... а может вообще готовый модуль существует подточенный под распознавание паскаля?!... |
Author: | Zelya [ 19 Dec 2012, 18:50 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Скажу однозначно - простого способа нет. Вы, как я понял, хотите написать компилятор паскаля под i8080. Труд, надо сказать, огромный. Советую начать с чтения спецификаций этого языка а так же почитать литературку по компиляторах вобще (для Си ее будет побольше). |
Author: | sas9568635 [ 19 Dec 2012, 19:28 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Quote: Скажу однозначно - простого способа нет.
Спасибо за ответ ! Но Ваш ответ меня разочаровал! догадывался что так оно и будет...
|
Author: | Zelya [ 20 Dec 2012, 11:56 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Ну, если честно, я тут сам слабоват, что-то конкретное советовать. Мой прототип Си компилятора так никогда толоком и не работал. Может, уважаемый vinxru поможет больше. Но моего опыта достаточно, чтобы сказать, что задача весьма сложная, а для Паскаля будет сложнее, чем для Си. |
Author: | sas9568635 [ 20 Dec 2012, 12:37 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Я понимаю, что задача не из простых, но я думал (думаю), что возможно существуют правила правильного подхода к ней... допустим... Сразу из текста удалить все коментарии и лишние пробелы... обрабатывать построчно (или по "точку с запятой") "маркировать" и "нумеровать" все метки "Begin" "end" "If" и т.д. так чтобы можно было сразу понять на какую метку должен быть переход допустим таким образом Метка "Proc_Primer_IF1_else" и т.д. Вообще, я начинаю поминать, что внутри одного компилятора должны существовать не менее 2-3 подкомпилятров которые должны компилировать код в код следующего компилятора, постепенно преобразовывая код Паскаля в => Полупаскаль-ПолуМакроАсм => МакроАсм => Асм => коды КР580... Вот так вот оно в моем понимании, во всяком случаее на данный момент. На других форумам мне посоветовали вот - Quote: ищите книги по теории построения лексических и синтаксических анализаторов. основам конструирования компиляторов и т.д.)
начните, например http://it.mmcs.sfedu.ru/wiki/Конспект_л ... мпиляторов» ........................... да, есть интерпретаторы кода на Паскаль/Delphi. Вопрос только в том, что Вы хотите сделать? (что получить на выходе)... |
Author: | Zelya [ 20 Dec 2012, 12:55 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Quote: Вопрос только в том, что Вы хотите сделать? (что получить на выходе)...
Оень логичный вопрос. Так как я почти уверен, что для Делфи существует механизм, создания объектов в памяти из кода-стринга. Только вот, Вам он не нужен. Можно попробовать поискать парсер, который из стринга сделает дерево сущностей. Типа из
Code: x:=y+1;Вы получите XML: Code: <BinaryOperation> <Type> Assign </Type> <Left> <Variable> <Type> Integer </Type> <Name> x </Name> </Variable> </Left> <Right> <BinaryOperation> <Type> Add </Type> <Left> ...С таким XML уже намного проще работать. Но только вот такой парсер очень сложная штука. Не знаю найдете ли. Насчет же собственной компиляции, все-таки советую попробовать начать с ассемблера в бинарник. Как тренировка - просто прекрасно, и тут я многое могу подсказать. Я понимаю, что Вас расстраивает отсутствие подсветки и проверки синтаксиса и прочие "плюшки" редактора Делфи. Но поверьте, во-первых, это более простая задача. А во-вторых это можно будет потом самому доделать. А использовать среду Делфи для компиляции ПК-01 - слишком сложная и вряд ли нужная задача. Пешите полностью свой компилятор |
Author: | sas9568635 [ 20 Dec 2012, 13:50 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Среда Дельфи это уже как хороший вспомагательный инструмент по проверки Лексического анализа и Синтаксического анализа (ну и работоспособности программы для ПК-01). В моей задумке, компилятор будет компилировать правильно только после того как был проверен компиляцией дельфи. Перестраховка такая чтоль:-) Моя задача(задумка) написать компилятор (клон Дельфи), полностью совместимый с Дельфи средой. Т.е. когда написанную программу и полностью подготовленную (готовую) и проверенную на работоспособность в Дельфи, можно "легким движением" в маш коды ПК-01. Понятно, что многое будет упрощено "на нет". Когда я напишу компилятор простейший, но достаточно эффективный, тогда при попытке написать прогу будет очевидно, что имменно нужно развивать и дорабатывать. Допустим, компилятор будет понимать простейшие конструкции "A:=A+B;" "A=A*C;" А конструкции посложнее такие как "A:=A*B+C" т.е. больше чем одно математическое действие он понимать не будет. При попытке написать программу для ПК-01 сразу станет очивидным: А нужно ли это!? А можно ли "с этим жить"!? А стоит ли имменно это дорабатывать!? Или переключится на что-то другое? Например лучше доработать тип-массивы которых пока еще нет и т.д. или строку стринг или еще чего нить... Quote: Пешите полностью свой компилятор
Понимаешь, если я буду писать СВОЙ компилятор, то получиться, что я сам себе постепенно "отрубаю" пространство для дальнейшего развития компилятора. То есть, может получится в оконцовке, что я не учёл например, применение символов "^@" и т.д. либо наотрез решил, что конструкции с веткой else не нужны и не будут применяться в дальнейшем. А они "вкрай" понадобились. Представь, как после этого возможно вообще будет дорабатывать компилятор, если он изначально базировался на том что конструкций(символов) каких-то не будет?! Тоже самое и с лишними пробелами табами вводами... Вот допустим я решил, что их (лишних) не будет!... прога должна быть написана чётко и правильно и только тогда её сможет скомпилировать МОЙ компилятор?... Представляешь какая может получится скованность!? Поэтому я максимально страюсь приближаться к "Дельфийской свободе" написания программ те. чтобы компилятор понимал одинаково "A:=A+1;" и "A : =A + 1 ;" и т.д.Вообщем все для удобства и размаха пользователя! ну и я сам такой же... Хочу с размахом! Без ограничений! Непонятных! |
Author: | Zelya [ 20 Dec 2012, 13:59 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
sas9568635 Куда проще в своем компиляторе игнорировать пробелы, чем совершать математические операции - это факт. Тем не менее, я почти уверен, что начав с Паскаля, Вы не прийдете к вразумительному результату, не имея достаточного опыта. Еще раз подчеркну, простого решения "в лоб" для такой задачи не имеется, а Вы выбираете один из наиболее сложных путей. Так же, в дополнение, хочу отметить, что из 99% потенциальных пользователей (а их и так очень мало) компилятора для ПК-01, лучше откажуться от разработки программ вобще, чем будут ставить себе Делфи. Так что либо пишите полностью независимую среду, либо ориентируйтесь на маленькие дпоплнительные утилиты или библиотеки, не требующие установки. |
Author: | Zelya [ 20 Dec 2012, 14:22 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Обсуждение Паскаля вынес в отдельную тему. |
Author: | sas9568635 [ 20 Dec 2012, 15:47 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Quote: Так же, в дополнение, хочу отметить, что из 99% потенциальных пользователей (а их и так очень мало) компилятора для ПК-01, лучше откажуться от разработки программ вобще, чем будут ставить себе Делфи. Так что либо пишите полностью независимую среду, либо ориентируйтесь на маленькие дпоплнительные утилиты или библиотеки, не требующие установки.
Хм...Что-то мы на разных языках... Существует модуль-DprPasToLV.dll при котором будет процедура (функция) Compile(s:string); Которая будет компилировать текстовый файл (в строке S) и создавать готовый SAV-файл для ПК-01. Утилиту Compile.exe, иммея готовый компилятор в виде Compile(s:string); , создать создать несложно. Поэтому Дельфи можно при желании вообще не использовать (а блокнот, например ). До сообственной среды подобной Дельфи, еще очень далеко и будет ли она нужна вообще, имея средЫ Дельфи, Паскаль и т.д.. Просто среда Дельфи как хороший вспомагатель для написания и отработки и "доведения до ума" программы которую пишешь для ПК-01, и получается, что зачем изобретать велосипед т.е. Сообственную среду подобную дельфи, но видишли подточенную под мой компилятор!?. Надеюсь мой текст, который выше можно понять. |
Author: | sas9568635 [ 20 Dec 2012, 16:58 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
Вот впервые столнулся вот с таким: Компиляторы компиляторов Lex + Yacc Flex + Bison CoCo Antlr Gold Parser Builder GPLex + GPPG Скажите пожалуйста что это такое, стоит ли с этим разбиратся, найду ли на русском доки по этому, и вообще стоит ли?... |
Author: | Zelya [ 20 Dec 2012, 21:26 ] |
Post subject: | Re: DprToLvt (PasToLvt) |
sas9568635 Насчет использования/не использования Делфи ответил в теме по Паскалю. Насчет "компиляторы компиляторов" - не слышал, не использовал. Хотя, звучит очень интересно. Может, на досуге почитаю. Правда, есть подозрение, что в Вашем случае это все может только усложнить разработку (Вам придется учить дополнительный скриптовый язык, или еще что-то такое). |
Page 13 of 15 | All times are UTC+03:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |