Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » создание компилятора

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

odl455



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для решения одной задачи встала задача создания собственного макро-языка. Нужна возможность создания макросов которые затем компилируются в бинарный код. Как к такой задаче подступиться?

Всего записей: 659 | Зарегистр. 26-08-2002 | Отправлено: 14:08 17-03-2003
Guderian



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1. Пересмотреть задачу
2. Многое зависит от макросов.
3. Переводить в какой-нибудь существующий яву и юзать его компилятор.
4. Можно начать с классики, например знаменитой книжки Вирта "Алгоритмы+структуры данных=программы".
5. Копать в сторону yacc, lex,edg и иже с ними
6. Взять сырцы какого-нибудь гнутого компилятора
7. Использовать ActiveX Scripting Engine. Не компилятор, но достаточно шустер.
8. Использовать .NET. Там компиляция в run-time не вызывает проблем.
 
Вариантов много. Все зависит от задачи...

Всего записей: 382 | Зарегистр. 07-05-2002 | Отправлено: 14:46 17-03-2003 | Исправлено: Guderian, 14:49 17-03-2003
odl455



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Более конкретно - обработка файлов в сответствии с командами, написанными на макро-языке. Поиск. Удаление. Замена. Вставка. Сравнение. И т.д. Точнее говоря пишутся процедуры на макро-языке, затем компилируются в бинарный код, и уже он работает над файлом.
 
Что лучше подойдёт для такой задачи? Свой компилятор необходим или можно воспользоваться каким-то стандартным средством?

Всего записей: 659 | Зарегистр. 26-08-2002 | Отправлено: 17:13 17-03-2003 | Исправлено: odl455, 17:14 17-03-2003
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Посмотри в сторону PHP, Perl и иже сними, везьде где есть регулярные выражения. По моему один из этих языков ориетирован на обработку текстов в файлах. И конечно читать и разбираться с регулярными выражениями.

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 18:27 17-03-2003
UncoNNecteD



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
odl455
Может дл я начала проще написать интерпретатор макроязыка?

----------
-= Я тут чертовски давно =-

Всего записей: 4040 | Зарегистр. 21-03-2002 | Отправлено: 18:43 17-03-2003
odl455



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
UncoNNecteD
 
Вообще интерпретатор похоже и не нужен. Это несколько отличная от компилятора вещь.
Ну в принципе умных слов мне подкинули немало - буду разбираться

Всего записей: 659 | Зарегистр. 26-08-2002 | Отправлено: 22:32 17-03-2003
Guderian



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
odl455

Цитата:
Более конкретно - обработка файлов в сответствии с командами, написанными на макро-языке.

Цеж AWK чистой воды. Тулза, которой впору уже 25 летие праздновать. Специально предназначена для деформации некоторого входного файла с использованием командного файла. Простенький "язык программирования" - как раз то, что надо для текстовых файлов плюс где-то валялись трансляторы его командных файлов в си. Хотя тулза и юниксовая, проблем с поиском портов под вынь быть не должно. В крайнем случае, берешь исходники и вперед. И можно обойтись без велосипеда. А если очень хочется, но нельзя, то здесь скорее не транслятор/компилятор, а state machine. Вполне возможно, что теория автоматов поможет.

Всего записей: 382 | Зарегистр. 07-05-2002 | Отправлено: 09:55 18-03-2003
odl455



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Guderian
 
А можно написать на AWK некие процедуры обработки, затем сделать из них бинарный код. Затем тосовать этим бинарным кодом как угодно? То есть например затем просто писать такие макросы: если 3-й байт файла равен 33h, то выполнить над файлом процедуру 1, иначе выполнить процедуру 3. Далее такой макрос нужно преобразовать опять же в бинарный код, и он уже обрабатывает весь объём данных.

Всего записей: 659 | Зарегистр. 26-08-2002 | Отправлено: 13:29 18-03-2003 | Исправлено: odl455, 13:33 18-03-2003
Pinocchio

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вообще сейчас для людей существует XML,X-Link,X-Pointer,X... Советую полистать в книжном магазине. Это уже ориентированные txt-формы, иерархии контекстов. Парсером заниматься нынче нет смысла. В дельфи это можно читать как файл, даже как пакет данных (смотри ТРarser).
Ориентированные трансформы для создания новых языков, а по книге - база данных с иерархией.

----------
Meaning this is something additional.

Всего записей: 683 | Зарегистр. 18-11-2002 | Отправлено: 13:47 18-03-2003 | Исправлено: Pinocchio, 19:34 25-04-2006
Guderian



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
odl455
Как я уже говорил, есть конвертеры вроде awk2c, awka, awkcc, a2p для конвертации в c, perl. Возможно есть и другие. Только компилятор тебе самому надо будет запускать. Полной гибкости он тебе не даст, но уже что-то. Хотя с бинарными файлами могут быть проблемы. Это я уже лопухнулся. Думал, о текстовых речь. Мое имхо подсказывает, что если задача "реальная", т.е. нуждается в выполнении,  а не просто искуства ради, то здесь как всегда нужен копромис между сложностью реализации и возможностями. Для этого, как мне кажется, надо ответить на несколько вопросов.
1. Насколько важно наличие компилятора. И если важно, то подойдет ли внешний компилятор от третьего производителя.
2. Сформулировать минимум и максимум "языка". Достаточно ли будет, например, регулярных выражений.
3. Есть ли привязка к среде разработки.
Это вкратце, что первым в голову пришло.
 
Pinocchio

Цитата:
А чем не устраивает синтаксис CRK файлов

Вопрос прочитай "Поиск. Удаление. Замена. Вставка. Сравнение.". Как ты будешь все это делать (за исключением замены) с помощью crk. А если человеку надо замену по условию. Как в crk реализовать, например, регулярные выражения?
 

Цитата:
уже ориентированные трансформы

Трансформ там один - xslt, который почему-то и не был упомянут. Все остальные к трансформации отношения не имеют. Это раз. Два - как с помощью того же xslt трансформировать текстовый файл, который не well-formed? Три. Посоветуй, где мне несведущему библиотеки с нормальной реализацией x-link, x-pointer найти? Или так просто, слова умные где-то услышал? Четыре. С каких пор xml, x-link и x-pointer стали парадигмами?
 

Цитата:
Результат семантическая иерархия объектов поддерживаемых системой.

Я плакалъ
 
Теперь понятно, почему "развитых" было взято в кавычки...

Всего записей: 382 | Зарегистр. 07-05-2002 | Отправлено: 15:14 18-03-2003
odl455



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pinocchio
 
Похоже на очень разумную мысль. Но я её не понял. Можно чуть подробнее по поводу "ориентированные трансформы для создания новых языков" и "парсером заниматься нынче нет смысла" - только чтобы я понял можно простейший пример для моей задачи. И ещё можно без ориентации на Delphi. Если возможно, то с ориентацией на VC++ 6.0

Всего записей: 659 | Зарегистр. 26-08-2002 | Отправлено: 15:16 18-03-2003
Guderian



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
odl455

Цитата:
ориентированные трансформы для создания новых языков

Это п.5.

Всего записей: 382 | Зарегистр. 07-05-2002 | Отправлено: 15:31 18-03-2003
odl455



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Guderian
 

Цитата:
1. Насколько важно наличие компилятора. И если важно, то подойдет ли внешний компилятор от третьего производителя.  
2. Сформулировать минимум и максимум "языка". Достаточно ли будет, например, регулярных выражений.  
3. Есть ли привязка к среде разработки.  

 
Задача действительно требует реального выполнения. Ресурсов не много, но если для правильного решения задачи они будут необходимы - это не вопрос. То есть пока для меня стоит задача "сформулировать задачу" и оценить её сложность и требуемые знания.
 
1. Компилятор необходим потому что будет просто огромное количество написанных макросов. Чтобы их не пришлось все переписывать в случае некоторых изменений в системе. Это одна из целей решаемой задачи.
 
2. Минимум я сформулировал. Это базовые операции над блоками данных (над кусочками файлов). По условиям. Простейшие математичечские выражения.
 
3. Наверное нет. Но пока я не представляю целиком все аспекты, утверждать не могу.

Всего записей: 659 | Зарегистр. 26-08-2002 | Отправлено: 15:46 18-03-2003
Guderian



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1. Их не надо будет переписывать и в случае интерпретатора.
С остальным пунктами все понятно. В первом приближении изложу свою последовательность действий при данной задаче.
 
- Различие между компилятором и транслятором суть - скорость. При оплате в 10уе/час и трудоемкости гораздо более 500 человеко-часов получается стоимость хорошего сервера с 2xXeon 2.8, который будет "интерпретировать" десятками гигабайт в час. Разница в скорости между ними измеряется не порядками, к тому же в большей степени определяется возможностями системы ввода вывода. Вывод - что интерпретатор, что компилятор - в данном случае большой разницы нет.
- Что есть из существующего для платформы Win (поскольку используем vc++). Это ActiveX Script Engine. Вполне зарекомендовавшая себя техника (используется в asp,dts,wsh и... список длинный).
- Что получается? Некий ActiveX контейнер (суть класс), который регламентирует методы и свойства управления потоками данных. Грубо говоря, есть, например, IStream InputStream, IStream OutputStream, byte readByte(), void writeByte(byte), void Copy(int size), и т.д. В зависимости от потребностей. Одновременно, этот контейнер является и ActiveX Scripting host. Т.е. выполняет сценарии, написанные на vbscript, jscript (при желании PascalScript, rexx и многое другое) внутри себя, давая им доступ к сервисным свойствам и методам. Т.е. конструкции вида:

Код:
 
if (InputStream.getByte() == 0x32) InputStream.Copy(128);
 

будут вполне нормальны для оной техники. останется только со временем наворотить сервисы, предоставляемые контейнером. Можно еще и препроцессор сделать в стиле ssi. Что бы наиболее часто используемые макросы/части макросов можно было вставлять в другие посредством одной строки.
 
Вот такая вот получилась история...

Всего записей: 382 | Зарегистр. 07-05-2002 | Отправлено: 10:27 19-03-2003
Pinocchio

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Guderian
На счёт умных слов не согласен:

Цитата:
Или так просто, слова умные где-то услышал?  

Высказал отнють не собственную мысль, а усвоенную, т.к. являюсь тоже автором.  
Парадигма - недосягаемо.

Цитата:
А если человеку надо замену по условию. Как реализовать, например, регулярные выражения?

Условием в Прологе является непротиворечивость высказывания.  
 
odl455
Мне трудно учить видеть во всём иерархию.
 
 
Добавлено
Guderian

Цитата:
последовательность действий при данной задаче.

Вам что делать нечего?  


----------
Meaning this is something additional.

Всего записей: 683 | Зарегистр. 18-11-2002 | Отправлено: 12:49 19-03-2003 | Исправлено: Pinocchio, 19:47 25-04-2006
Guderian



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pinocchio

Цитата:
Высказал отнють не собственную мысль, но хорошо усвоенную, т.к. являюсь автором одного из формализованных мета-языков. Парадигма абсолютно недосягаемая для моего Pentium 100.

Там было как минимум три вопроса, уж коль все усвоил, ответь на них, будь любезен. А то ведь несведущий человек, внимая твоему совету, начнет такое городить, несмотря на все авторства и прочие понты. И заодно разницу между мета-языками и языками разметки поясни. А то никак в голову не придет, каким образом здесь первые появились. Я, конечно, понимаю, что аббревиатуры идентичные, но все же...
 

Цитата:
 
section(header) :-  
...
 

Это что, crk-файлы так нынче выглядеть стали? Да, отстал я от жизни. Всегда думал, что они выглядят как строки адрес: байт-до байт-после.
 

Цитата:
Что я могу скачать по интернету зарубежного, такого чтобы там было Ваше авторство и чтобы это было на пользу синтаксиса/трансляции?

Я где-то написал, что пишу трансляторы для буржуев? Увольте, я занимаюсь реальными задачами в реальных областях. Финансовый менеджмент, планирование поставок/производства, бухучет, кадровый менеджмент, системы принятия решения, data mining & warehouse, content managment, etc...
 

Цитата:
В соседней комнате сидит мужичёк...


Цитата:
Писать на C++ высоко сложные вычислительные задачи нужно в большом коллективе и с приличной оплатой. У меня впечатление, что делать Вам нечего, либо мы в разных странах живём.  

Я плакалъ второй раз. Просто от умиления. Связи с обсуждаемым опять таки не понял, поскольку описанное решение поднимается одним человеком за пару дней.
 

Цитата:
И можно я похвастаюсь уже?

А кто-то уже успел до тебя? Покамест ты первый. Имхо только этим и занимаешься. Хотя, учитывая приведенный пример, стыдно должно быть. Если уж очень хочется, могу в пм такого нахвастать, что мало не покажется И вообще, какой же ты зануда Либо говори по существу, либо нечего меня на бессмысленную полемику толкать, а то я на это дело, каюсь, падок

Всего записей: 382 | Зарегистр. 07-05-2002 | Отправлено: 15:46 19-03-2003
Pinocchio

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Guderian

Цитата:
Да, отстал я от жизни. Всегда думал, что они выглядят как строки адрес: байт-до байт-после.

Кто говорил что нужно использовать интерпретаторы а не их синтаксис? Использование синтаксиса ещё не обязывает интерпретировать. Ты не  отстал , а просто не оценил.  

Цитата:
Там было как минимум три вопроса, уж коль все усвоил, ответь на них, будь любезен.

1. XSLT очевидно объявлен трансформом.
2. Лично я за xml.
3. Не знаю, чем тебе неподходит faq?  
4. Парадигма? Отринь свои помыслы и посмотри на богатство и многообразие тэгов!

Цитата:
разницу между мета-языками и языками разметки поясни.

Если действительно интересует, то мета-язык это любой язык у котогоро есть язык-объект. На мета-языке строится описание объекта. XML, X-... это формализованные мета-языки, имеющие объектом размеченные данные.

Цитата:
Финансовый менеджмент, планирование поставок/производства, бухучет, кадровый менеджмент, системы принятия решения,  



----------
Meaning this is something additional.

Всего записей: 683 | Зарегистр. 18-11-2002 | Отправлено: 13:34 20-03-2003 | Исправлено: Pinocchio, 20:00 25-04-2006
Guderian



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pinocchio

Цитата:
Я что, говорил что нужно использовать интерпретаторы CRK? По моему я имел ввиду использование синтаксиса CRK.

Ты вообще текст опонента читаешь? Или выборочно? Каждую третью букву пятого слова. Я вообще-то про синтаксис и говорил.
 
1. Для каких "более широких целей" пригоден x-link, например, по сравнению с xslt. И чем определяется ширина этих целей?
2. К сведению месье, я уже второй год использую xml в продакшн проектах. И напрягать апач я не собираюсь по двум причинам. Во-первых, я апач не пользую, а во-вторых, он понятия не имеет о существовании xml, а я понятия не имею, как его "баловать на предмет создания xml". Для этого есть другие инструменты.
3. Вообще не понял, откуда взялось...
4. Нет слов. Только тему в начале подучи. А пока садись - двойка
 
Все, устал я от тебя

Всего записей: 382 | Зарегистр. 07-05-2002 | Отправлено: 13:23 21-03-2003
Pinocchio

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Guderian
Это я устал от Вас сударь

Цитата:
Вопрос прочитай "Поиск. Удаление. Замена. Вставка. Сравнение.". Как ты будешь все это делать (за исключением замены) с помощью crk.  


Цитата:
Это что, crk-файлы так нынче выглядеть стали? Да, отстал я от жизни.  


Цитата:
Я где-то написал, что пишу трансляторы для буржуев?  


Цитата:
Я вообще-то про синтаксис и говорил.

Когда нужно использовать синтаксис используют разные символы, особые энтузиасты заменяют исходные, на свои изобретённые. Я учусь быть пользователем своего компьютера, как то - помешаю информацию в эксел и не волнуюсь за цифры.

----------
Meaning this is something additional.

Всего записей: 683 | Зарегистр. 18-11-2002 | Отправлено: 14:58 21-03-2003 | Исправлено: Pinocchio, 19:20 25-04-2006
Guderian



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ты в начале ответь хотя бы на один заданный вопрос по xml и смежным ml, потом будешь учить меня, кем мне надо "быть"... Либо приводи конкретные примеры решения поставленной задачи. Вся остальная патетика игнорируется.

Всего записей: 382 | Зарегистр. 07-05-2002 | Отправлено: 09:51 24-03-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » создание компилятора


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru