Допустим, мы имеем файл '1.test' содержимое которого
print "Hello, World"
Вопрос:
Как реализовать так, чтобы из файла '1.test' мы получили исполняемый файл (формата: aout, elf, или другого)???
Идеи у меня есть, но они не очень эффективны и громозкие, да и ненадежные т.к. мини-компилятор будет зависимым:
1 преобразовать строку print "Hello, World" в C-код, и вызвать компилятор GCC для сборки
2 преобразовать строку print "Hello, World" в Asm-код, и вызвать компилятор Nasm для сборки
Мини-компилятор на С
Модератор: Модераторы разделов
Re: Мини-компилятор на С
1. Напиши свой компилятор.
или
2. Напиши свой парсер.
или
3. Не изобретай велосипед, и пиши на Python/BASH
или
2. Напиши свой парсер.
или
3. Не изобретай велосипед, и пиши на Python/BASH
Re: Мини-компилятор на С
используйте csh например
а вообще если вы хотите пользоваться компилятором Си, то и пишите на Си, а то вы предлагаете придумать свой собственный язык программирования
можете еще на perl посмотреть
а вообще если вы хотите пользоваться компилятором Си, то и пишите на Си, а то вы предлагаете придумать свой собственный язык программирования
можете еще на perl посмотреть
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.
0xDEFEC8ED
0xDEFEC8ED
Re: Мини-компилятор на С
1. Напиши свой компилятор.
или
2. Напиши свой парсер.
или
3. Не изобретай велосипед, и пиши на Python/BASH
на Pythonе я писал, только интерпритатор, и то глючный и долгий из-за подстановки переменных
3. Не изобретай велосипед, и пиши на Python/BASH
Насчет BASH, я его не пониманию, в том смысле что трудные скрипты я не осилю!
А поповоду велосипеда, хочу напись язык который б мне был бы понятен, чтоб миллионы книг не заучивать (например, как это было когда я на Линукс перешел)
- Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
- Контактная информация:
Re: Мини-компилятор на С
Начнём с начала: для чего вам это нужно?
Если вам надо писать программы на каком-то языке, то лучше взять существующий язык и не изобретать велосипед.
Если же вам нужен язык специального назначения (DSL - Domain Specific Language), то почитайте про разработку компиляторов. Ключевые слова: формальные грамматики, конечные автоматы, flex, yacc.
Кстати, есть еще вариант: DSEL (Domain Specific Embeded Language). То есть берется существующий достаточно гибкий язык, и его средствами создаётся его подмножество, имеющее нужный синтаксис и семантику (простейший пример DSEL - это любая достаточно развитая библиотека). Соответственно, новый компилятор вовсе не нужен. Так сложилось, что для создания DSEL (как, впрочем, и для DSL) удобнее всего использовать функциональные (или родственные) языки - Haskell, Forth, Lisp,...
Если вам надо писать программы на каком-то языке, то лучше взять существующий язык и не изобретать велосипед.
Если же вам нужен язык специального назначения (DSL - Domain Specific Language), то почитайте про разработку компиляторов. Ключевые слова: формальные грамматики, конечные автоматы, flex, yacc.
Кстати, есть еще вариант: DSEL (Domain Specific Embeded Language). То есть берется существующий достаточно гибкий язык, и его средствами создаётся его подмножество, имеющее нужный синтаксис и семантику (простейший пример DSEL - это любая достаточно развитая библиотека). Соответственно, новый компилятор вовсе не нужен. Так сложилось, что для создания DSEL (как, впрочем, и для DSL) удобнее всего использовать функциональные (или родственные) языки - Haskell, Forth, Lisp,...
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Re: Мини-компилятор на С
ОК! Решенно! Буду на скриптах писать на Питоне и Баш
ОК! Решенно! Возьму за основу Питон
ОК! Решенно! Возьму за основу Питон