АвторСообщение



Сообщение: 1
Зарегистрирован: 14.03.09
ссылка на сообщение  Отправлено: 14.03.09 01:08. Заголовок: исходники и новая версия URQ-интерпретатора. Стандарт парсера


Представляю тестовую версию программы URQ-интерпретатора с исходным кодом на языке Pascal.

Оформление отображения текста пока не проводилось, основная задача - проектирование парсера для стандартизации и единообразия представления алгоритма разбор команд языка URQL.

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

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

что реализовано в данной (0.0.1) версии:
поддержка всех арифметических и логических операций, операторы:
if ... then ... [else не поддерживается]
p, pln, btn - строки текста с подстановками #выражение$ #%текстовая_переменная$ ##выражение$
instr - единственный способ создания текстовых переменных (длины хранимой строки пока ограничена 63 символами) с подстановками #выражение$ #%текстовая_переменная$ ##выражение$
goto, proc, common, inv, rnd, cls, input, invkill, perkill, save, pause, end.

Характеристики:
* работа с файлами неограниченной длины
* при переходе по метке файл перечитывается заново
* таблица переменных (переменные/инвентарь/метоки/строки) длиной 750 элементов. (строковые типы занимают по два элемента).
* история возврата из подпрограмм на 1025 позиций.
* анализатор ошибки отображает: необходимый оператор для данной конструкции, указание строки, позиции в строке где обнаружена.
* запуск с командной строки (help - выводится при запуске без параметров)
* пока интерпретатором обрабатываются файлы только в dos-кодировке (ASCII).

Режимы работы:
0 - запуск квеста
1 - запуск из сохранения (не тестировался)
2 - сканирование квеста на наличие ошибок
3 - сканирование квеста на наличие ошибок и проверка наличия всех переходов по меткам (долго обрабатывает...)


не знаю как здесь выложить файл... а так смотрите сюда: http://forum.ifiction.ru/viewtopic.php?pid=14929#p14929

Спасибо: 0 
Профиль Цитата Ответить
Ответов - 117 , стр: 1 2 3 4 5 6 All [только новые]





Сообщение: 9
Зарегистрирован: 14.03.09
ссылка на сообщение  Отправлено: 22.03.09 19:16. Заголовок: блин, проглядел здес..


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

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


1. Где плохо спрограммировано? врятли найдешь лишнюю команду (к примеру твоя прога - 700 кб, моя - 25 кб а в windows-реализации не более 70 кб)
2. С предметной областью все в порядке, прочитал документацию, имеющимися на данный момент средствами можно реализовать практически все возможности URQL, кроме работы со строками, музыки, графического режима и html
____
p.s.: пока нет конкретных примеров все это пустые разлагольства. А пока буду добавлять работу со строками и поддержку win-кодировки...

Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Сообщение: 163
Зарегистрирован: 20.01.07
ссылка на сообщение  Отправлено: 22.03.09 19:55. Заголовок: fireton принял позиц..



 цитата:
fireton принял позицию, как конкурирующей фирмы


Не смешите меня, пожалуйста.


 цитата:
Где плохо спрограммировано?


Практически везде. Чего только стоит функция поиска метки в коде через перечитывание файла. Каждый раз. Но главным показателем является то, что ваш интерпретатор падает практически гарантировано на любом квесте из библиотеки.

И прекратите занимать позицию оскорбленного гения. Вам здесь никто ничего не должен.

Тон. Спасибо: 0 
Профиль Цитата Ответить



Сообщение: 10
Зарегистрирован: 14.03.09
ссылка на сообщение  Отправлено: 22.03.09 21:29. Заголовок: падает потому что: л..


падает потому что: либо кодировка не dos, либо не будем гадать - код в студию!
___
>>>...практически везде...
- опять уходим от ответа?
___
хоть при поиске каждый раз перечитывает, зато позволяет работать с квестами любого размера, кто не знает - в чистом DOS всего 500 кб памяти.
помнится в dos_urq сказано что текст локаций можно менять во время выполнения, значит тоже перечитывает файл.

Спасибо: 0 
Профиль Цитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 22.03.09 22:16. Заголовок: Квест любого размера..


Квест любого размера при ограничениях длины строк, количества меток и переменных? Смешно.

Спасибо: 0 
Цитата Ответить
постоянный участник


Сообщение: 189
Зарегистрирован: 13.03.07
ссылка на сообщение  Отправлено: 23.03.09 09:43. Заголовок: abcdef пишет: uux -..


abcdef пишет:

 цитата:
uux - квест в студию!, т.е. желательно локацию в которой произошла ошибка (ИМЯ локации можно узнать если сделался файл DEBUG.TXT)



См. здесь. Локация - стартовая (собственно, если ничего не делать, то вылетает, а если переместить курсор выбора кнопки - то виснет наглухо).


 цитата:
ну конечно людьми, заслужившими доверие, например uux.



Рановато меня в соратники записали;). Интерпретатор с несовместимым со "стандартным де-факто" досурковским синтаксисом, с кучей ограничений (из-за которых не проигрывается бОльшая часть написанных на Урке квестов)... Синтаксический контроль (по опять-таки не вполне совместимым со стандартом де-факто правилам) - это, конечно, хорошо, но не настолько, чтобы компенсировать остальные недостатки. Я не профессиональный программист и поэтому не буду обсуждать достоинства/недостатки кода, а скажу с точки зрения пользователя - разработка явно (пока?) весьма сырая, лично я бы такую выкладывать не стал, пока хотя бы не потестировал ее сам и не добился более-менее удовлетворительной работы на более-менее обширном материале. Перекладывать альфа-тестирование с собственных плеч на пользователей - ИМХО ход сомнительный. Дело Ваше, конечно - но тогда не надо болезненно реагировать на нелестные определения Вашего творения. Без обид.

Я уж не говорю (потому что не хочется повторятся;) о востребованности даже нормально работающего URQ-интерпертатора под DOS при живой Досурке...

Спасибо: 0 
Профиль Цитата Ответить



Сообщение: 174
Зарегистрирован: 03.07.07
ссылка на сообщение  Отправлено: 23.03.09 10:06. Заголовок: Дык эта разработка у..


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

Спасибо: 0 
Профиль Цитата Ответить



Сообщение: 11
Зарегистрирован: 14.03.09
ссылка на сообщение  Отправлено: 23.03.09 22:11. Заголовок: прошу прощения, черт..


прошу прощения, черт дернул компилить перед копированием на сайт с опцией с тотальной проверкой выполнения программы - в итоге вылетало при переполнении переменной счетчика...
исправлено и добавлена работа c win-кодировкой
__
uux - доверяю, потому что помогал с документацией и давал дельные советы.
noname - тоже помогал...

Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Сообщение: 338
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 23.03.09 22:54. Заголовок: кста, досурка НЕ пер..


кста, досурка НЕ перечитывает файл. проверено. фраза "текст локаций можно менять во время выполнения", возможно, цитирована не точно, и могла означать, что с помощью #%$ можно подставлять операторы. таким образом программа может меняться во время выполнения. интересно, что досурка не имеет ограничений на размер (или кол-во переменных) квеста. впрочем, никто не пробовал запускать квест более 1Гб...

запустив свой пример(см внизу), обратил внимание на странное 'прыгание' курсора. с чем это может быть связано?

---

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

и ещё: какие же баги ты выловил в других квестах с помощью своего скана?

---

пример:
Скрытый текст


I love Sinclair, DOS and URQ Спасибо: 0 
Профиль Цитата Ответить



Сообщение: 12
Зарегистрирован: 14.03.09
ссылка на сообщение  Отправлено: 24.03.09 11:22. Заголовок: курсор прыгает,потом..


курсор прыгает,потому что сэкономил пару команд-меню перерисовывает за каждый цикл ожидания
___
возможно не так понял о перечитывании файла,но как бы не было,это единственно-оптимальный способ.Буферизация не подходит в виду непредсказуемости. Квест можно полностью видоизменять когда отобразилось меню какой либо локации, иначе можно сбить возврат из подпрограмм.
___
отлавливаемые ошибки (если пользовательские имена не содержат запрещенных символов) это полностью весь синтаксис,например в вычислениях:
if абв abc_or_def * (5 + ) and then pln ...
ошибки будут указываться в "5+)" и "and then" случаях.Хотя при выполнении недостающие операнды заменяются нулями.
Сканирование меток довольно сильно помогает.
Те участки кода которые хотелось бы пропустить при проверке и выполнении, комментируйте символом ";"
___
согласен,в конечной локации следует чтоб интерпретатор выдавал сообщение об этом, квест завершается кнопкой ESC, в любом случае делается файл DEBUG.TXT -это в целях отладки и сохранения квеста в любой локации

Спасибо: 0 
Профиль Цитата Ответить



Сообщение: 13
Зарегистрирован: 14.03.09
ссылка на сообщение  Отправлено: 24.03.09 11:30. Заголовок: пожайлуста, если как..


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

Спасибо: 0 
Профиль Цитата Ответить



Сообщение: 175
Зарегистрирован: 03.07.07
ссылка на сообщение  Отправлено: 24.03.09 16:34. Заголовок: Включи java..


Включи java

Спасибо: 0 
Профиль Цитата Ответить
почётное бревно




Сообщение: 447
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.03.09 19:01. Заголовок: Nex, ты злой :))..


Nex, ты злой :))

Спасибо: 0 
Профиль Цитата Ответить



Сообщение: 176
Зарегистрирован: 03.07.07
ссылка на сообщение  Отправлено: 25.03.09 01:00. Заголовок: Путь наименьшего соп..


Путь наименьшего сопротивления, всего лишь.

Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Сообщение: 139
Зарегистрирован: 20.01.06
ссылка на сообщение  Отправлено: 25.03.09 12:34. Заголовок: как-то странно работ..


как-то странно работают anykey. т е кроме того, что не работают- ещё и "съедают" часть выводимого до этого текста

замечено в игре "Холм Фей". найти её можно где-то здесь: http://www.urq.plut.info/taxonomy/term/1

abcdef:
 цитата:
Ошибки в готовых квестах, отлавливающихся моим интерпретатором - Есть.


noname:
 цитата:
и ещё: какие же баги ты выловил в других квестах с помощью своего скана?

и какие же? в каких играх?

интересно же

вот, например какой баг выловил я в упомянутой игре: про строчку
 цитата:
if масс#x$#y$=1 then btn Север, Север & btn Юг, Юг & btn Запад, Запад & btn Восток, Восток

скан выдаёт "IF без THEN"

на последок добавлю ложку мёда: сканер нашёл ошибочную строчку
 цитата:
ln #$

это хорошо. плохо, что при всём при этом эта строчка нормально игнорируется существующими интерпретаторами, а твой на этом- вырубается

кста, интересно, что "Холм Фей" можно пройти и на досурке, и на Акурке. на других- не пробовал

мой дневник: http://ariom.ru/forum/t4591-0.html Спасибо: 0 
Профиль Цитата Ответить



Сообщение: 14
Зарегистрирован: 14.03.09
ссылка на сообщение  Отправлено: 25.03.09 15:04. Заголовок: qwerty спасибо, разб..


qwerty спасибо, разберусь с anykey
немножко о вставках через "#...$", где "..." - это либо арифметическо-логическое выражение, либо строковая переменная. Работает это только в строках. Применительно к данному случаю будет выглядеть так:
instr sys=масс#x$#y$
if system=1 then btn ....
а ошибка выдает, потому что встречает символ "#" который должен встречаться только в строках.
конечно не удобно,что на первой ошибке происходит завершение сканирования, но иначе алгоритм усложнился бы.

Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Сообщение: 339
Зарегистрирован: 17.03.08
ссылка на сообщение  Отправлено: 25.03.09 15:42. Заголовок: abcdef пишет: возмож..


abcdef пишет:
 цитата:
возможно не так понял о перечитывании файла,но как бы не было,это единственно-оптимальный способ



 цитата:
интерпретатор пока требует чтоб в каждом квесте была локация common, хоть и пустая, например:

:common
end

Примечание для ускорения работы, желательно часто вызываемые локации, например common размещать как можно ближе к началу файла.


что же будет при попытке запустить хоть сколько-нибудь весомый квест? мне просто жалко моего винчестера


 цитата:
instr sys=масс#x$#y$
if system=1 then btn ....

да. в этом случае скан-деббагер ошибку не найдёт. вопрос: планируешь ли ты со временем сделать нормальную поддержку #$ ?


 цитата:
курсор прыгает,потому что сэкономил пару команд-меню перерисовывает за каждый цикл ожидания

значит ли это, что при этом каждый раз перечитывается файл?

I love Sinclair, DOS and URQ Спасибо: 0 
Профиль Цитата Ответить
почётное бревно




Сообщение: 448
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.03.09 16:30. Заголовок: Зря вы привязались к..


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

Спасибо: 0 
Профиль Цитата Ответить



Сообщение: 15
Зарегистрирован: 14.03.09
ссылка на сообщение  Отправлено: 25.03.09 19:45. Заголовок: http://forum.ifictio..


http://forum.ifiction.ru/viewtopic.php?pid=15043#p15043
исправлено:
- команда anykey (квест "холм фей" не обнаружил)
- зарержка команды pause
- уменьшено мерцание курсора
- генерация ошибки, если невозможно перейти на метку (ранее просто зависал)
- сообщение о завершении квеста, в локации которой нет кнопок
___
На действительно больших квестах происходит чтение. А небольшие файлы операционная система сама буферизирует, и не обращается к жесткому диску при повторном чтении. Диск гонять - эт плохо, но если вы слушаете музыку или смотрите фильмы - интенсивность работы диска в сотню раз больше. Когда отобразилось меню - чтение прекращается до перехода по меню.
___
исправлять ошибки врятли получиться из-за неоднозначности, например:
ln #$....
здесь может быть два и больше вариантов -
ln = #$....
pln #$....
поэтому нельзя исправить автоматом
___
Интерфейс - это косметика, пока главное - движек.
___
про поддержку #$ пока сказать однозначно не могу, а вот если нужно будет переделать квест под стандарты dos_urq и тд., то можно за минуту сделать так:
открыть квест в блокноте (notepad.exe) - правка - заменить - пишем:
Что: system
Чем: #sys$
заменить все - сохраняем - закрываем.


Спасибо: 0 
Профиль Цитата Ответить
постоянный участник




Сообщение: 140
Зарегистрирован: 20.01.06
ссылка на сообщение  Отправлено: 25.03.09 19:56. Заголовок: ааааааааааааааа, на ..


ааааааааааааааа, на плуте отсутствует "Холм Фей" !!!!!!!!!!!!!!!!!!

мой дневник: http://ariom.ru/forum/t4591-0.html Спасибо: 0 
Профиль Цитата Ответить



Сообщение: 16
Зарегистрирован: 14.03.09
ссылка на сообщение  Отправлено: 25.03.09 20:58. Заголовок: пардон, если кто-то ..


пардон, если кто-то успел скачать файл "aurq003" это не та версия.. заменил свежим "aurq_003"

Спасибо: 0 
Профиль Цитата Ответить
Ответов - 117 , стр: 1 2 3 4 5 6 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 37
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет