Корректная обработка ошибок, обнаруженных лексером
Issue #156
duplicate
Originally reported on Google Code with ID 156
Мне сейчас совершенно не нравится код lexical_analyzer.php строки 68-92.
Мало того, что там выжили двойные кавычки, так в анализаторе оказался код, специфичный
для языка. Это никуда не годится: весь специфичный для языка код должен находится в
блоке, в классе языка.
Для обработки таких ситуаций в token_base.php есть класс block_formal_langs_lexical_error.
А в потоке токенов - поле $errors.
lexical_analyzer.php должен только проверить что поле $errors не пустое, и если ошибки
есть то конвертировать их в mistakes независимым от языка образом.
Если что непонятно или требуется добавить поле в класс лексической ошибки - спрашивайте
здесь, обсудим.
Reported by oasychev
on 2012-10-13 19:16:11
Comments (6)
-
reporter -
Account Deleted Сделано.
Reported by
mamontov.dp
on 2012-10-26 09:24:30 - Status changed:Fixed
-
reporter Тестировал. Выяснились следующие проблемы уже в интерфейсе вопроса: 1. Ошибка в ответе преподавателя 1.1) должна показываться сразу при попытке сохранения, а не только после ввода описаний 1.2) в сообщение об ошибке добавить саму анализируемую строку и выделить жирностью ошибочный участок - как это делает preg (посмотрите, только не на стандартном матчере) Для строки 'abc' "adf ошибки There is multicharacter literal at 0:{$a->col} Cannot match input {$a->symbol} near 0:6 Проверить заполнение $a, да и вторая ошибка вполне могла бы быть конкретнее... 2. в ответе студента There is multicharacter literal at 0:{$a->col} A lexeme "{$a->value}" at 0:0 is odd in response Проверить строки!!!
Reported by
oasychev
on 2012-10-31 08:11:58 - Status changed:InProgress
-
reporter Вы посмотрели эти проблемы?
Reported by
oasychev
on 2013-01-11 21:12:02 -
reporter Я бы все-таки не использовал общий класс lexical mistake, а выделил специальный вид ошибки - типа scanning error. Если Бирюкова свой код сделает, лексических ошибок еще много разных будет...
Reported by
oasychev
on 2013-01-18 20:07:03 -
reporter Reported by
oasychev
on 2013-01-27 15:29:11 - Status changed:Duplicate
- Merged into:#175 - Log in to comment
Reported by
oasychev
on 2012-10-13 19:18:14