DprToLvt (PasToLvt)

Все о разработке ПО для ПК-01,02 "Львов" на современных платформах
User avatar
Zelya
Site Admin
Posts: 1071
Joined: 24 Jul 2008, 12:05

Re: DprToLvt (PasToLvt)

Post by Zelya »

QDialogs - оно самое. Ищите замену, вроде обычный Dialogs или что-то такое.
User avatar
MARAT_BEST
Posts: 341
Joined: 13 Feb 2012, 15:32
Location: Россия

Re: DprToLvt (PasToLvt)

Post by MARAT_BEST »

sas9568635 wrote:
MARAT_BEST wrote: у вас гдето (возможно при компиляции библиотеки, в uses попала ссылка на данный DLL)

Code: Select all

    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.
на вскидку QDialogs ? и плюс гдето может быть в следующих модулях также в uses

EkranLVUnit.pas
RegViewLVUnit.pas
.....
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

MARAT_BEST wrote: на вскидку QDialogs ? и плюс гдето может быть в следующих модулях также в uses....
Позже попробую убрать QDialogs, но раз я его когда-то (уже не помню зачем) вставил - значит он нужен !
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

Уважаемые форумчане!
Уже не знаю как и вопрос задать... :-) а также незнаю что искать:-)
вообщем...
Каким образом можно быстро и грамотно «распознавать» текст (код) языка паскаля (дельфи)?... т.е. я было начал писать подобное...
если «program» тогда ...
если «uses» тогда ...
если «Var» тогда... пробелы, табы, вводы - пропустить... «вычислить» переменную.... пробелы, табы, вводы, пропустить... ожидать... либо запятую... либо двоеточие... о господи:-), если еще одна переменная опять повторить - пробелы, табы, вводы пропустить... а предыдущие переменные «помнить» так как их тип будет указан после двоеточия... а также после указания типа возможно еще «=значение» и т. д.
Вообщем, у меня началось головокружение... :-)
Вот и подумал, может существует какой-то более простой способ «распознавания» этого всего страхомудия!?.. иль кто подскажет что мне необходимо искать в инете для реализации этого?!... а может вообще готовый модуль существует подточенный под распознавание паскаля?!...
User avatar
Zelya
Site Admin
Posts: 1071
Joined: 24 Jul 2008, 12:05

Re: DprToLvt (PasToLvt)

Post by Zelya »

Скажу однозначно - простого способа нет. Вы, как я понял, хотите написать компилятор паскаля под i8080. Труд, надо сказать, огромный. Советую начать с чтения спецификаций этого языка а так же почитать литературку по компиляторах вобще (для Си ее будет побольше).
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

Zelya wrote:Скажу однозначно - простого способа нет.
Спасибо за ответ ! Но Ваш ответ меня разочаровал! :D :( :wink: догадывался что так оно и будет...:(
User avatar
Zelya
Site Admin
Posts: 1071
Joined: 24 Jul 2008, 12:05

Re: DprToLvt (PasToLvt)

Post by Zelya »

Ну, если честно, я тут сам слабоват, что-то конкретное советовать. Мой прототип Си компилятора так никогда толоком и не работал. Может, уважаемый vinxru поможет больше. Но моего опыта достаточно, чтобы сказать, что задача весьма сложная, а для Паскаля будет сложнее, чем для Си.
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

Я понимаю, что задача не из простых, но я думал (думаю), что возможно существуют правила правильного подхода к ней... допустим...
Сразу из текста удалить все коментарии и лишние пробелы...
обрабатывать построчно (или по "точку с запятой")
"маркировать" и "нумеровать" все метки "Begin" "end" "If" и т.д. так чтобы можно было сразу понять на какую метку должен быть переход допустим таким образом Метка "Proc_Primer_IF1_else" и т.д.

Вообще, я начинаю поминать, что внутри одного компилятора должны существовать не менее 2-3 подкомпилятров которые должны компилировать код в код следующего компилятора, постепенно преобразовывая код Паскаля в => Полупаскаль-ПолуМакроАсм => МакроАсм => Асм => коды КР580...

Вот так вот оно в моем понимании, во всяком случаее на данный момент.

На других форумам мне посоветовали вот -
ищите книги по теории построения лексических и синтаксических анализаторов. основам конструирования компиляторов и т.д.)
начните, например http://it.mmcs.sfedu.ru/wiki/Конспект_л ... мпиляторов»
...........................
да, есть интерпретаторы кода на Паскаль/Delphi.
Вопрос только в том, что Вы хотите сделать? (что получить на выходе)...
User avatar
Zelya
Site Admin
Posts: 1071
Joined: 24 Jul 2008, 12:05

Re: DprToLvt (PasToLvt)

Post by Zelya »

Вопрос только в том, что Вы хотите сделать? (что получить на выходе)...
Оень логичный вопрос. Так как я почти уверен, что для Делфи существует механизм, создания объектов в памяти из кода-стринга. Только вот, Вам он не нужен. Можно попробовать поискать парсер, который из стринга сделает дерево сущностей. Типа из

Code: Select all

x:=y+1;
Вы получите XML:

Code: Select all

<BinaryOperation>
	<Type>
		Assign
	</Type>
	<Left>
		<Variable>
			<Type>
				Integer
			</Type>
			<Name>
				x
			</Name>
		</Variable>
	</Left>
	<Right>
		<BinaryOperation>
			<Type>
				Add
			</Type>
			<Left>
...
С таким XML уже намного проще работать. Но только вот такой парсер очень сложная штука. Не знаю найдете ли.

Насчет же собственной компиляции, все-таки советую попробовать начать с ассемблера в бинарник. Как тренировка - просто прекрасно, и тут я многое могу подсказать. Я понимаю, что Вас расстраивает отсутствие подсветки и проверки синтаксиса и прочие "плюшки" редактора Делфи. Но поверьте, во-первых, это более простая задача. А во-вторых это можно будет потом самому доделать. А использовать среду Делфи для компиляции ПК-01 - слишком сложная и вряд ли нужная задача. Пешите полностью свой компилятор :)
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

Среда Дельфи это уже как хороший вспомагательный инструмент по проверки Лексического анализа и
Синтаксического анализа (ну и работоспособности программы для ПК-01). В моей задумке, компилятор будет компилировать правильно только после того как был проверен компиляцией дельфи. Перестраховка такая чтоль:-) Моя задача(задумка) написать компилятор (клон Дельфи), полностью совместимый с Дельфи средой. Т.е. когда написанную программу и полностью подготовленную (готовую) и проверенную на работоспособность в Дельфи, можно "легким движением" в маш коды ПК-01. Понятно, что многое будет упрощено "на нет". Когда я напишу компилятор простейший, но достаточно эффективный, тогда при попытке написать прогу будет очевидно, что имменно нужно развивать и дорабатывать. Допустим, компилятор будет понимать простейшие конструкции "A:=A+B;" "A=A*C;" А конструкции посложнее такие как "A:=A*B+C" т.е. больше чем одно математическое действие он понимать не будет. При попытке написать программу для ПК-01 сразу станет очивидным: А нужно ли это!? А можно ли "с этим жить"!? А стоит ли имменно это дорабатывать!? Или переключится на что-то другое? Например лучше доработать тип-массивы которых пока еще нет и т.д. или строку стринг или еще чего нить...
Zelya wrote:Пешите полностью свой компилятор :)
Понимаешь, если я буду писать СВОЙ компилятор, то получиться, что я сам себе постепенно "отрубаю" пространство для дальнейшего развития компилятора. То есть, может получится в оконцовке, что я не учёл например, применение символов "^@" и т.д. либо наотрез решил, что конструкции с веткой else не нужны и не будут применяться в дальнейшем. А они "вкрай" понадобились. Представь, как после этого возможно вообще будет дорабатывать компилятор, если он изначально базировался на том что конструкций(символов) каких-то не будет?! Тоже самое и с лишними пробелами табами вводами... Вот допустим я решил, что их (лишних) не будет!... прога должна быть написана чётко и правильно и только тогда её сможет скомпилировать МОЙ компилятор?... Представляешь какая может получится скованность!? Поэтому я максимально страюсь приближаться к "Дельфийской свободе" написания программ те. чтобы компилятор понимал одинаково "A:=A+1;" и "A : =A + 1 ;" и т.д.
Вообщем все для удобства и размаха пользователя! :-) ну и я сам такой же... Хочу с размахом! Без ограничений! Непонятных!
User avatar
Zelya
Site Admin
Posts: 1071
Joined: 24 Jul 2008, 12:05

Re: DprToLvt (PasToLvt)

Post by Zelya »

sas9568635
Куда проще в своем компиляторе игнорировать пробелы, чем совершать математические операции - это факт. Тем не менее, я почти уверен, что начав с Паскаля, Вы не прийдете к вразумительному результату, не имея достаточного опыта. Еще раз подчеркну, простого решения "в лоб" для такой задачи не имеется, а Вы выбираете один из наиболее сложных путей.

Так же, в дополнение, хочу отметить, что из 99% потенциальных пользователей (а их и так очень мало) компилятора для ПК-01, лучше откажуться от разработки программ вобще, чем будут ставить себе Делфи. Так что либо пишите полностью независимую среду, либо ориентируйтесь на маленькие дпоплнительные утилиты или библиотеки, не требующие установки.
User avatar
Zelya
Site Admin
Posts: 1071
Joined: 24 Jul 2008, 12:05

Re: DprToLvt (PasToLvt)

Post by Zelya »

Обсуждение Паскаля вынес в отдельную тему.
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

Zelya wrote: Так же, в дополнение, хочу отметить, что из 99% потенциальных пользователей (а их и так очень мало) компилятора для ПК-01, лучше откажуться от разработки программ вобще, чем будут ставить себе Делфи. Так что либо пишите полностью независимую среду, либо ориентируйтесь на маленькие дпоплнительные утилиты или библиотеки, не требующие установки.
Хм...
Что-то мы на разных языках... :-)
Существует модуль-DprPasToLV.dll при котором будет процедура (функция) Compile(s:string);
Которая будет компилировать текстовый файл (в строке S) и создавать готовый SAV-файл для ПК-01.
Утилиту Compile.exe, иммея готовый компилятор в виде Compile(s:string); , создать создать несложно. Поэтому Дельфи можно при желании вообще не использовать (а блокнот, например :-) ). До сообственной среды подобной Дельфи, еще очень далеко и будет ли она нужна вообще, имея средЫ Дельфи, Паскаль и т.д.. Просто среда Дельфи как хороший вспомагатель для написания и отработки и "доведения до ума" программы которую пишешь для ПК-01, и получается, что зачем изобретать велосипед т.е. Сообственную среду подобную дельфи, но видишли подточенную под мой компилятор!?.

Надеюсь мой текст, который выше можно понять. :-)
sas9568635
Posts: 372
Joined: 20 Apr 2012, 16:00
Location: Конотоп

Re: DprToLvt (PasToLvt)

Post by sas9568635 »

Вот впервые столнулся вот с таким:
Компиляторы компиляторов
Lex + Yacc
Flex + Bison
CoCo
Antlr
Gold Parser Builder
GPLex + GPPG


Скажите пожалуйста что это такое, стоит ли с этим разбиратся, найду ли на русском доки по этому, и вообще стоит ли?... :-)
User avatar
Zelya
Site Admin
Posts: 1071
Joined: 24 Jul 2008, 12:05

Re: DprToLvt (PasToLvt)

Post by Zelya »

sas9568635
Насчет использования/не использования Делфи ответил в теме по Паскалю.

Насчет "компиляторы компиляторов" - не слышал, не использовал. Хотя, звучит очень интересно. Может, на досуге почитаю. Правда, есть подозрение, что в Вашем случае это все может только усложнить разработку (Вам придется учить дополнительный скриптовый язык, или еще что-то такое).
Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests