Генерация дерева выражения по русскому описанию - практика 2014
Originally reported on Google Code with ID 289
Перенести на PHP, PHPParserGenerator и JFLex PHP - пока на уровне выполнения юнит-тестов.
Генерировать дерево из потомков preg_node и думать как обеспечить более полный их охват.
Reported by oasychev
on 2014-07-07 08:25:24
Comments (20)
-
reporter -
Виртуалку скопировал на комп в 902, который сразу за дверью справа (на мониторе написано 19). Она лежит в диске D:\moodle vm. Там сам образ и небольшое readme.
Reported by
vostreltsov
on 2014-07-08 10:56:39 -
reporter Как дела, чего достигли, какие вопросы? Почему совсем не вижу кода на сервере? Даже клон не завели...
Reported by
oasychev
on 2014-07-10 13:29:33 -
reporter В понедельник в 13-30 встреча будет в политехе. Быть всем, кто по моим задачам работает. Лучше взять ноутбуки потому что многим надо показать: а) что делать с меркуриалом и клонами б) вопросы по коду
Reported by
oasychev
on 2014-07-12 16:51:47 -
reporter Что-то от вас давно коммитов не видно; и вопросов тоже нет. В чем проблема? Документацию по JLexPHP и PHPParserGenerator найти вроде несложно; примеры использования можно посмотреть в question/type/preg/src и blocks/formal_langs/src Где перевод тестов?
Reported by
oasychev
on 2014-07-16 22:12:21 -
Account Deleted Олег Александрович, а приемлимо ли нормально работать со строками в PHP, в JLex включена опция unicode, но можно ли пользоваться функциями вроде этой без опасений: if(strpos($this->yytext(),'более')===true)
Reported by
nik95penik@yandex.ru
on 2014-07-24 21:18:29 -
Нельзя так делать. Посмотри на файл src/preg_lexer.lex - там много работы с юникодом. Ctrl+F'ай по файлу "::str" - увидишь примеры. Вообще, в мудле есть класс core_text, но у нас есть свой наследник от него - qtype_preg_unicode. В лексере используется где как. Твой пример выглядел бы как if(qtype_preg_unicode::strpos($this->yytext(),'более')===true) Кстати, strpos никогда строго true не возвращает, строгое только false.
Reported by
vostreltsov
on 2014-07-24 21:26:42 -
Account Deleted Благодарю. Значит на строковые функции не полагаться.
Reported by
nik95penik@yandex.ru
on 2014-07-24 21:59:49 -
reporter У них просто дубликаты есть. Можно использовать их либо как статические методы, либо (лучше) - создать объект qtype_preg_unicode и использовать динамические. Потому что объект гарантирует корректную работу [ ] при взятии символа - для того и создавался. С ними тоже проблемы. И следите, чтобы файлы с русскими буквами имели кодировку UTF-8.
Reported by
oasychev
on 2014-07-24 22:03:21 -
Account Deleted Понял. Спасибо большое.
Reported by
nik95penik@yandex.ru
on 2014-07-24 22:09:35 -
Для правильной работы [] у нас qtype_poasquestion_string
Reported by
vostreltsov
on 2014-07-25 04:21:19 -
Account Deleted Какими типами представляются условия вида (?(...)...|...) и \k<...> ? И что мне делать с преобразованием шаблонов из обратной польской нотации в дерево? Писать новые функции с кучей условий? В связи с 2 вопросом думаю на счет тестирования парсера, раньше оно было за счет этой функции преобразования.
Reported by
nik95penik@yandex.ru
on 2014-07-28 13:23:14 -
reporter Условия это conditional subpatterns - их надо искать в разделе операций, смотрите на сокращения от этой фразы среди потомков qtype_preg_operator \k это backreference - смотреть в листьях - среди потомком qtype_preg_leaf
Reported by
oasychev
on 2014-07-28 21:19:05 -
Account Deleted для \k нашел, для условий чего-то не могу найти версии,чтобы было не только IF-THEN, а IF-THEN-ELSE.
Reported by
nik95penik@yandex.ru
on 2014-07-28 21:25:02 -
reporter Там по идее в случае else просто лишний операнд добавляется в массив. Это один класс.
Reported by
oasychev
on 2014-07-29 13:34:41 -
Account Deleted Вопрос по виртуальной машине, java тут есть установленная? хоть примерно носом ткнуть, а то в поиске муть какая-то, ничего похожего. Если нет, то что установить надо?
Reported by
nik95penik@yandex.ru
on 2014-07-29 13:48:28 -
reporter попробуйте вызвать java.exe - узнаете. Есть нет - скачать и поставить легко, вам ведь только пакет для запуска нужен...
Reported by
oasychev
on 2014-07-29 13:56:11 -
reporter Ну то есть без exe конечно - просто в терминале (командной строке) выполните java -version Если напишет версию, значит есть. И той же командой java можно запускать. Если нет - надо поставить...
Reported by
oasychev
on 2014-07-29 14:05:22 -
Нет, я не ставил джаву. В консоли из-под рута написать pacman -S jre7-openjdk
Reported by
vostreltsov
on 2014-07-29 20:10:17 -
reporter Брошено автором.
Reported by
oasychev
on 2015-03-22 22:13:02 - Status changed:WontFix
- Log in to comment
Reported by
oasychev
on 2014-07-07 08:34:04