Форум » » исходники и новая версия URQ-интерпретатора. Стандарт парсера » Ответить

исходники и новая версия URQ-интерпретатора. Стандарт парсера

abcdef: Представляю тестовую версию программы 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

Ответов - 117, стр: 1 2 3 4 5 6 All

noname: Nolite, в 'классической' досурке pause 0 означает ждать бесконечно долго

Nolite: Спасибо, уже исправил.

qwerty: местами текст программы как бы не очень понятен p s#i+1$[&pause -1 instr sys=s#i$ instr str=#%system$ len=strlen #%str$& ;посчитаем кол-во входящих слов c=0&j=1 :r2 if strchar j,#%str$&=46 then c=c+1 j=j+1&if j<=len then goto r2 ;END - посчитаем кол-во входящих слов p #len$]=#c$ >>> &pause -1 ЗЫ для тех кто не в курсе темы: к стандарту URQL, равно как и к парсеру ЭТА тема отношения не имеет


abcdef: qwerty ты ошибаешься, впрочем как (чуть не сказал всегда), в приличной доле ответов в этой теме. все очень даже понятно: для строк существует только два символа завершения либо "&", либо конец строки. для выделения строк я не стал делать как другие авторы: "что-то ... в кавычках", тогда символ кавычка автоматически исключился бы из списка разрешенных, т.е. они бы порождали неоднозначность, яркий пример квест "буратино" - попробуйте запустить его на dos_urq или fire_urq. про интерпретатор скажу так: 1. Имеющиеся возможности позволяют сгенерировать/адаптировать любую urq-структуру. 2. Быстрое сканирование/отладка 3. До 70% известных мне квестов уже сканированы/адаптированы к AURQ009

qwerty: qwerty пишет: местами текст программы как бы не очень понятен abcdef, qwerty ты ошибаешься, ................................. все очень даже понятно: ...................... имелось ввиду, что Я непонимаю, как именно должен обрабатываться твоим интерпретатором приведённый отрывок например, мне неизвестно назначение [] и >>> впрочем, можешь не отвечать- наверняка эта инфа кде-нибудь описана(ведь так?) и мне просто в лом было изучать очередной язык

Хломидоманад: qwerty, там оператор вывода на экран, какое еще назначение?

abcdef: в архиве с версией aurq0092 дока. некоторые моменты возможно упустил, например 'pause' и отрицательное число. если есть вопросы по работе операторов я все расскажу (отвечать мне, правда, удобнее на том форуме). В существующую версию (0092) могу попробовать добавить конструкцию #...$ в любом месте, но не буду т.к. не хочу чтобы aurq превратился в непонятно что... а так у меня планы (если будет очень скучно) превратить aurq в компилятор, тогда оператор 'system' будет эквивалентен получению адреса в памяти

qwerty: Хломидоманад, abcdef, всё, разобрался! тогда по ошибке запустил не ту версию- в ней прога не работала- вот и пытался разобраться

abcdef: выложил aurq0093. aurq 3D-лабиринт (в архиве)

Nex: abcdef куда выложил-то? ссылку?

abcdef: все версии и программы можно найти только по одному адресу: http://forum.ifiction.ru/viewtopic.php?pid=15540

Nex: ясно. я на ификшене забанен, жаль, хотел взглянуть на 3D лабиринт.

abcdef: спроси у тех кто скачал, а смотреть не чего, в графике лучше было б и быстрее.

Nex: abcdef я у тебя спрошу. отправь мне на nex@otaku.ru, если не трудно. если "смотреть нечего", то зачем выкладывать?

Чикага 20-й: Nex за что тебя забанили?

Nex: За то, что не согласился с Олегусом. А ещё я сказал ему "Пф" Да переживать там нечего, бан ненадолго.

abcdef: готовится экспериментальная сетевая версию aurq. предача/прием текстовой строки. работа в потоке интерпретатора, поэтому приостанавливает до выполнения транзакции. после выполнения доступны через переменные: строка данных; строка контрольной суммы квеста и его имя; строка лога обмена и ошибок. #не требуется создание своего игрового сервера. #объем транзакции 2-4 kb + пользовательские данные. #скорость передачи/получения от 30 сек #прием извлекает и удаляет одно первое сообщение #требования: разрешение протоколов esmtp/pop3; наличие зарегистрированного пустого email ящика на каждого игрока ___ тестируется с сервером mail.ru каково мнение пользователей?

Nex: на движок без игр пользователям пофиг.

abcdef: не идет квест - адаптируй. и все-таки что скажут более опытные квесто-писатели и авторы других платформ? т.к. имеются два существенных минуса: 1. потенциально-опасный код - начиная от парольных переборщиков и рассылки спама, до неблагонадежных скриптов ворующих пароли пользователей. 2. отсутствие мобильности программ требованием доступа в интернет, которого, например как у меня, мало. ___ что планируется добавить: передача из строки почты esmtp, получение в строку почты pop3, получение http файла в строку через методы get и post

Хломидоманад: Пока не очень понял, что выигрывают от этой возможности игрописатели. ps Лабиринт тормозит, а в досурке вообще не запускается. Но ты и так знаешь. pps Мне лично все же кажется, что аурке нужен GUI. Уж очень велик нынче контингент потенциальных пользователей, которых консоль может просто отпугнуть... 2009 год все-таки.



полная версия страницы