PC-01 Lviv

It is currently 29 Mar 2024, 19:01

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 215 posts ]  Go to page Previous 111 12 13 14 15 Next
Author Message
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 03 Dec 2012, 14:19 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
QDialogs - оно самое. Ищите замену, вроде обычный Dialogs или что-то такое.


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 03 Dec 2012, 14:23 
Offline
User avatar

Joined: 13 Feb 2012, 15:32
Posts: 341
Location: Россия
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.
на вскидку QDialogs ? и плюс гдето может быть в следующих модулях также в uses

EkranLVUnit.pas
RegViewLVUnit.pas
.....


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 03 Dec 2012, 14:39 
Offline

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


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 19 Dec 2012, 17:21 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Уважаемые форумчане!
Уже не знаю как и вопрос задать... :-) а также незнаю что искать:-)
вообщем...
Каким образом можно быстро и грамотно «распознавать» текст (код) языка паскаля (дельфи)?... т.е. я было начал писать подобное...
если «program» тогда ...
если «uses» тогда ...
если «Var» тогда... пробелы, табы, вводы - пропустить... «вычислить» переменную.... пробелы, табы, вводы, пропустить... ожидать... либо запятую... либо двоеточие... о господи:-), если еще одна переменная опять повторить - пробелы, табы, вводы пропустить... а предыдущие переменные «помнить» так как их тип будет указан после двоеточия... а также после указания типа возможно еще «=значение» и т. д.
Вообщем, у меня началось головокружение... :-)
Вот и подумал, может существует какой-то более простой способ «распознавания» этого всего страхомудия!?.. иль кто подскажет что мне необходимо искать в инете для реализации этого?!... а может вообще готовый модуль существует подточенный под распознавание паскаля?!...


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 19 Dec 2012, 18:50 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Скажу однозначно - простого способа нет. Вы, как я понял, хотите написать компилятор паскаля под i8080. Труд, надо сказать, огромный. Советую начать с чтения спецификаций этого языка а так же почитать литературку по компиляторах вобще (для Си ее будет побольше).


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 19 Dec 2012, 19:28 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Quote:
Скажу однозначно - простого способа нет.
Спасибо за ответ ! Но Ваш ответ меня разочаровал! :D :( :wink: догадывался что так оно и будет...:(


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 20 Dec 2012, 11:56 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Ну, если честно, я тут сам слабоват, что-то конкретное советовать. Мой прототип Си компилятора так никогда толоком и не работал. Может, уважаемый vinxru поможет больше. Но моего опыта достаточно, чтобы сказать, что задача весьма сложная, а для Паскаля будет сложнее, чем для Си.


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 20 Dec 2012, 12:37 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Я понимаю, что задача не из простых, но я думал (думаю), что возможно существуют правила правильного подхода к ней... допустим...
Сразу из текста удалить все коментарии и лишние пробелы...
обрабатывать построчно (или по "точку с запятой")
"маркировать" и "нумеровать" все метки "Begin" "end" "If" и т.д. так чтобы можно было сразу понять на какую метку должен быть переход допустим таким образом Метка "Proc_Primer_IF1_else" и т.д.

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

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

На других форумам мне посоветовали вот -
Quote:
ищите книги по теории построения лексических и синтаксических анализаторов. основам конструирования компиляторов и т.д.)
начните, например http://it.mmcs.sfedu.ru/wiki/Конспект_л ... мпиляторов»
...........................
да, есть интерпретаторы кода на Паскаль/Delphi.
Вопрос только в том, что Вы хотите сделать? (что получить на выходе)...


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 20 Dec 2012, 12:55 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
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 - слишком сложная и вряд ли нужная задача. Пешите полностью свой компилятор :)


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 20 Dec 2012, 13:50 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Среда Дельфи это уже как хороший вспомагательный инструмент по проверки Лексического анализа и
Синтаксического анализа (ну и работоспособности программы для ПК-01). В моей задумке, компилятор будет компилировать правильно только после того как был проверен компиляцией дельфи. Перестраховка такая чтоль:-) Моя задача(задумка) написать компилятор (клон Дельфи), полностью совместимый с Дельфи средой. Т.е. когда написанную программу и полностью подготовленную (готовую) и проверенную на работоспособность в Дельфи, можно "легким движением" в маш коды ПК-01. Понятно, что многое будет упрощено "на нет". Когда я напишу компилятор простейший, но достаточно эффективный, тогда при попытке написать прогу будет очевидно, что имменно нужно развивать и дорабатывать. Допустим, компилятор будет понимать простейшие конструкции "A:=A+B;" "A=A*C;" А конструкции посложнее такие как "A:=A*B+C" т.е. больше чем одно математическое действие он понимать не будет. При попытке написать программу для ПК-01 сразу станет очивидным: А нужно ли это!? А можно ли "с этим жить"!? А стоит ли имменно это дорабатывать!? Или переключится на что-то другое? Например лучше доработать тип-массивы которых пока еще нет и т.д. или строку стринг или еще чего нить...
Quote:
Пешите полностью свой компилятор :)
Понимаешь, если я буду писать СВОЙ компилятор, то получиться, что я сам себе постепенно "отрубаю" пространство для дальнейшего развития компилятора. То есть, может получится в оконцовке, что я не учёл например, применение символов "^@" и т.д. либо наотрез решил, что конструкции с веткой else не нужны и не будут применяться в дальнейшем. А они "вкрай" понадобились. Представь, как после этого возможно вообще будет дорабатывать компилятор, если он изначально базировался на том что конструкций(символов) каких-то не будет?! Тоже самое и с лишними пробелами табами вводами... Вот допустим я решил, что их (лишних) не будет!... прога должна быть написана чётко и правильно и только тогда её сможет скомпилировать МОЙ компилятор?... Представляешь какая может получится скованность!? Поэтому я максимально страюсь приближаться к "Дельфийской свободе" написания программ те. чтобы компилятор понимал одинаково "A:=A+1;" и "A : =A + 1 ;" и т.д.
Вообщем все для удобства и размаха пользователя! :-) ну и я сам такой же... Хочу с размахом! Без ограничений! Непонятных!


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 20 Dec 2012, 13:59 
Offline
Site Admin
User avatar

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

Так же, в дополнение, хочу отметить, что из 99% потенциальных пользователей (а их и так очень мало) компилятора для ПК-01, лучше откажуться от разработки программ вобще, чем будут ставить себе Делфи. Так что либо пишите полностью независимую среду, либо ориентируйтесь на маленькие дпоплнительные утилиты или библиотеки, не требующие установки.


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 20 Dec 2012, 14:22 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Обсуждение Паскаля вынес в отдельную тему.


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 20 Dec 2012, 15:47 
Offline

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

Надеюсь мой текст, который выше можно понять. :-)


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 20 Dec 2012, 16:58 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Вот впервые столнулся вот с таким:
Компиляторы компиляторов
Lex + Yacc
Flex + Bison
CoCo
Antlr
Gold Parser Builder
GPLex + GPPG


Скажите пожалуйста что это такое, стоит ли с этим разбиратся, найду ли на русском доки по этому, и вообще стоит ли?... :-)


Top
   
 Post subject: Re: DprToLvt (PasToLvt)
PostPosted: 20 Dec 2012, 21:26 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
sas9568635
Насчет использования/не использования Делфи ответил в теме по Паскалю.

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 215 posts ]  Go to page Previous 111 12 13 14 15 Next

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
cron
Powered by phpBB® Forum Software © phpBB Limited