Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужны примеры интерпретаторов/компиляторов 
:(
    Опции темы
Foror
Дата 5.12.2004, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 14.2.2004

Репутация: нет
Всего: 2



Хочу попробовать написать небольшой язык для решения своих проблем, так что если у кого есть примеры(желательно чего-нить полегче) или кто уже чего-то делал - скиньте мне пожалуйста исходники на [email protected]
--------------------
Разработка веб-сайтов и создание интернет магазина
PM MAIL WWW ICQ   Вверх
sergejzr
Дата 5.12.2004, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Я ведь уже ответил по теме.
http://forum.vingrad.ru/index.php?showtopic=20645&hl=

Чего там не понятного?
Можно ведь обсудить.
А исходники на мыло - это уж слишком простой вариант smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Foror
Дата 6.12.2004, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 14.2.2004

Репутация: нет
Всего: 2



Мне было бы проще изучить исходники, чем читать доки...
--------------------
Разработка веб-сайтов и создание интернет магазина
PM MAIL WWW ICQ   Вверх
Mad
Дата 6.12.2004, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: нет
Всего: 19



Цитата(Foror @ 6.12.2004, 14:59)
Мне было бы проще изучить исходники, чем читать доки...

Для интереса можеш попробовать flex-ом составить самый простой парсер и попробовать в нем разобраться без коментариев smile


--------------------
user posted image
PM MAIL   Вверх
Foror
Дата 12.12.2004, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 14.2.2004

Репутация: нет
Всего: 2



Я сейчас сделал объявление переменных и ариф. операции с ними. Сейчас вот не могу врубиться как сделать IF-THEN-ELSE, циклы и функции... Может кто подскажет, а то в доках на бизон я чего-то найти этого не смог, хотя ща еще перечитаю мож врублюсь smile
--------------------
Разработка веб-сайтов и создание интернет магазина
PM MAIL WWW ICQ   Вверх
sergejzr
Дата 12.12.2004, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Всё зависит от того, как ты начал делать smile Если делаешь дерево, то циклы будут выглядеть иначе, чем если делаешь байт код.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sardar
Дата 12.12.2004, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 1
Всего: 317



Советую вкурить это: http://www.devincook.com/GOLDParser/
Просто универсальная вещь, сам еще до конца не разобрался....

Про интерпретирование: дерево строить легче и легче написать юзая ООП язык. Тебе будет нужен интерфейс Statement, выполняющий себя и не возвращающий ничего; Expression расширяющий Statemen выполняющий себя и возвращающий некоторое значение; StatementList от Statement, содержит в себе другие Statement, при выполнении запрашивает выполнение у всех из своего списка.
Любой Expression может быть деревом из других Expression. Приведение к типу тоже реализуешь в этом же интерфейсе, т.е. getNumber(), getString() и прочие типы.

В результате if-else это Statement, при создании принимающий 3 аргумента: Expression - getBoolean() которого определит действие, Statement if_true - вызовем его если true, Statement if_false - иначе этот. StatementList наследуется от Statement, значит используем его если у нас более одного Statement в конструкции.

Это всё можно усложнить до безобразия, но идея останется та же smile

Если делать на байткоде, то всё гораздо сложнее, но интереснее. Придётся разбирать выражение на блок кода, заводит регистры, сам IF реализуется командой goto с меткой.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
sergejzr
Дата 12.12.2004, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Sardar, GoldParser для какого языка?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sardar
Дата 12.12.2004, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 1
Всего: 317



Цитата(sergej @ 12.12.2004, 16:21)
Sardar, GoldParser для какого языка?

Вроде бы для любого, вернее он не генерит код, только таблицы. Это универсальная вещь.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Foror
Дата 12.12.2004, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 14.2.2004

Репутация: нет
Всего: 2



Цитата(sergej @ 12.12.2004, 15:53)
Всё зависит от того, как ты начал делать smile Если делаешь дерево, то циклы будут выглядеть иначе, чем если делаешь байт код.

Я делаю деревом. И сейчас я просто не могу врубится, как сделать на бизоне IF-THEN-ELSE, как должно выполнятся или то или это, и каким образом это надо записать в синтаксисе бизона. Также я не пользуюсь лексом, т.е. у меня своя функция yyelex() вроде так называется и там как этот if-then-else разбирать?
--------------------
Разработка веб-сайтов и создание интернет магазина
PM MAIL WWW ICQ   Вверх
sergejzr
Дата 12.12.2004, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Надо не разбирать smile, а собирать. Обьект if_then_else. Как Сардар обьяснил smile

Примерно так:
Извините, код "навскидку" давно уже этим не занимался smile
Код

if_statement: IF exp THEN expressions END
{
$0=new if_then_else($2,$4 ,NULL)
}
| IF exp THEN expressions ELSE expressions END
{
$0=new if_then_else($2,$4 ,$5)
}



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Foror
Дата 13.12.2004, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 14.2.2004

Репутация: нет
Всего: 2



Может скинешь всётаки исходники своего бэйсика(или что ты там делал на бизоне?) smile ? А то я уже запарился идти методом тыка, причём тыкаться приходится всё время smile ...
--------------------
Разработка веб-сайтов и создание интернет магазина
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.