Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Виртуальные машины.  (Прочитано 25843 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Вахмурка
Помогающий

ru
Offline Offline
Пол: Мужской
Программист


WWW
« : 21-09-2007 14:17 » 

...Кто ни буть пробовал писать виртуальные машины? Поделитесь информацией пожалуйста. Улыбаюсь
Записан

Программа – это мысли спрессованные в код.
Вахмурка
Помогающий

ru
Offline Offline
Пол: Мужской
Программист


WWW
« Ответ #1 : 02-11-2007 17:38 » 

Уже сам написал. Пойду делиться опытом сам с собой.
Записан

Программа – это мысли спрессованные в код.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 02-11-2007 18:12 » 

а что за виртуальные машины ?
Записан

Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 02-11-2007 18:41 » 

что сам написал?
17:17 первый пост
19:38 второй

Били!!! Хватай его! Улыбаюсь
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 02-11-2007 19:04 » 

Sla, да не, польтора месяца уж ))
Записан

Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 02-11-2007 19:06 » 

Ух! Пронесло!
Вахмурка, расскажи, пожалуйста, че нарыл, че получилось?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Вахмурка
Помогающий

ru
Offline Offline
Пол: Мужской
Программист


WWW
« Ответ #6 : 09-12-2007 09:13 » 

Ух! Пронесло!
Вахмурка, расскажи, пожалуйста, че нарыл, че получилось?

... Да нечего сложного. Я имел в виду простой интерпритатор некого "внутреннего" кода, уже сто раз писал и сто раз переписывал, обычная рутина. Это для моего калькулятора, нужно добавить поддержку пользовательских функций. Проблема вообще не в этом. Ни как не могу найти книгу А.В. Костельцев
"Построение интерпретаторов и компиляторов. Использование программ BIZON, BYACC, ZUBR" + CD-ROM, наличие сидюка к книге главное. Скорее всего писать lR-анлизатор к грамматике придётся ручками но хотябы грамматику можно будет проанализировать при помощи этих программ на предмет конфликтов сдвиг-свёрстка и сдвиг-перенос. Вообше ужасно не хватает времени.

P.S.
  А вообще хочется создать свой язык программирования это ведь такая клёвая игрушка!
Записан

Программа – это мысли спрессованные в код.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 09-12-2007 09:35 » 

Вахмурка,
Цитата
А вообще хочется создать свой язык программирования это ведь такая клёвая игрушка!

а можно совместить Ага
есть такая игрушка - Colobot , там это и сделано. Сделай свою игру по такому же принципу Улыбаюсь Рады будем также поучавствовать Улыбаюсь
Записан

zubr
Гость
« Ответ #8 : 09-12-2007 10:33 » 

Цитата
Скорее всего писать lR-анлизатор к грамматике придётся ручками но хотябы грамматику можно будет проанализировать при помощи этих программ на предмет конфликтов сдвиг-свёрстка и сдвиг-перенос.
Trim решает подобные проблемы.
Я сам недавно делал программный интерпритатор кода. Суть - Delphi-компоненты, аналогичные по функциональности флеш-компонентам. Когда пользователь ложит их на форму и запускает процесс компиляции, кроме exe-файла создается флешка. Роль интерпритатора - перевести Delphi-код, введенный пользователем в обработчиках событий в ActionScript в режиме DisignTime.
Записан
Вахмурка
Помогающий

ru
Offline Offline
Пол: Мужской
Программист


WWW
« Ответ #9 : 09-12-2007 13:31 » 

Цитата
Скорее всего писать lR-анлизатор к грамматике придётся ручками но хотябы грамматику можно будет проанализировать при помощи этих программ на предмет конфликтов сдвиг-свёрстка и сдвиг-перенос.
Trim решает подобные проблемы.
Я сам недавно делал программный интерпритатор кода. Суть - Delphi-компоненты, аналогичные по функциональности флеш-компонентам. Когда пользователь ложит их на форму и запускает процесс компиляции, кроме exe-файла создается флешка. Роль интерпритатора - перевести Delphi-код, введенный пользователем в обработчиках событий в ActionScript в режиме DisignTime.

  А не подскажете где можно почитать про этот Trim? Чёто в google я ни чего не нашёл.( хотя может плохо искал ) . Книжку я то нашёл но жаба давит, помимо книжки придётся купить ещё что то что бы сумма заказа была не меннее 500 рублей.
Записан

Программа – это мысли спрессованные в код.
zubr
Гость
« Ответ #10 : 09-12-2007 15:26 » 

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

ru
Offline Offline
Пол: Мужской
Программист


WWW
« Ответ #11 : 09-12-2007 15:56 » 

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

  У меня все сложнее. Для написания лексическоего анализатора регулярные выражения подойдут, хотя лексические анализаторы я писал и без них. А вот с синтаксическим анализатором всё не так просто.
Записан

Программа – это мысли спрессованные в код.
zubr
Гость
« Ответ #12 : 09-12-2007 18:21 » new

Цитата
А вот с синтаксическим анализатором всё не так просто.
Ну, создаешь БД или XML-файл с ключевыми словами, функциями, выражениями и анализируй текст сверяя с БД. Я в принципе так и делал.
Записан
Вахмурка
Помогающий

ru
Offline Offline
Пол: Мужской
Программист


WWW
« Ответ #13 : 10-12-2007 17:18 » 

Вот фрагмент одной из грамматик с которыми я сейчас работаю. Граммитика не однозначна и будет доводится:

12. логТело ::= короткоеЛогТело
                       | длинноеЛогТело

13. короткоеЛогТело ::= блк логВыход кблк

14. длинноеЛогТело ::= блк списокЛогОператоров логВыход  кблк

15 логВыход ::= возврат логическоеВыражение ;
                        | если ( логическоеВыражение ) логВыход иначе логВыход
                        | длинноеЛогТело

16. списокЛогОператоров ::= списокЛогОператоров логОператор
                                           | логОператор

17. логОператор ::= если ( логическоеВыражение ) логОператор
                             | если ( логическоеВыражение ) лоОператор иначе логОператор
                             | пока ( логическоеВыражение ) логОператор
                             | блк списокЛогОператоров кблк
                             | если ( логическоеВыражение ) логВыход
                             | если ( логическоеВыражение ) логВыход иначе логОператор
                             | если ( логическоеВыражение ) логОператор иначе логВыход
                             | пока ( логическоеВыражение ) логВыход
                             | утверждение ;
                             | ;

Некоторая сложность связана с тем что недостижимый код в языке-ошибка, второе я хотел максимально "нагрузить" синтаксический анализ , что бы в семантическом анализе использовать самые простые проверки.

  Можно ли будет бодобную грамматику разобрать описанным Вами способом?
Записан

Программа – это мысли спрессованные в код.
zubr
Гость
« Ответ #14 : 10-12-2007 20:56 » 

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

ru
Offline Offline
Пол: Мужской
Программист


WWW
« Ответ #15 : 11-12-2007 16:36 » 

А с книжкой у меня случился облом: в фирме где я пытался её заказать, товара нет в наличии. Буду пробовать разные способы анализа, может попробую и Ваш.
Записан

Программа – это мысли спрессованные в код.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines