Как включать файлы с, умирают (); функция?

Steve Steiner корректен, который исключение порождает в antlr библиотеке, проходя через mTokens () метод и будучи пойманным в antlr библиотеке. Проблема состоит в том, что этот метод автоматически генерируется antlr. Поэтому любые изменения для обрабатывания исключения в mTokens () будут перезаписаны когда Ваш генерировать классы синтаксического анализатора/лексического анализатора.

По умолчанию, antlr зарегистрирует ошибки и попытается восстановить парсинг. Можно переопределить это так, чтобы parser.prog () выдал исключение каждый раз, когда с ошибкой встречаются. От Вашего примера кода я думаю, что это - поведение, которое Вы ожидали.

Добавляют этот код к Вашему grammer (.g) файл. Необходимо будет также выключить, "Включают Просто Мой Код" в меню отладки.

@members {

    public override Object RecoverFromMismatchedSet(IIntStream input,RecognitionException e,    BitSet follow)  
    {
        throw e;
    }
}

@rulecatch {
    catch (RecognitionException e) 
    {
        throw e;
    }
}

Это - моя попытка версии C# примера, данного в "Выходе из устройства распознавания на первой ошибке" глава "Категорической Ссылочной" книги ANTLR.

Hope это - то, что Вы искали.

8
задан Taryn East 12 November 2011 в 11:38
поделиться

3 ответа

Если я правильно понимаю, что вы пытаетесь сделать, то, к сожалению, это невозможно.

die (); остановит выполнение скрипта в этой точке откуда он называется.

8
ответ дан 5 December 2019 в 08:24
поделиться

Не говорящие по-английски:

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


Если вы хотите проверить, успешно ли произошло включение, вы можете проверить возвращаемое значение самой функции include:

// http://us3.php.net/manual/en/function.include.php Example #4
if ((include 'file1.php') != 'OK') {
    die();
}

Вы также можете рассмотрите require () вместо include () в зависимости от ваших потребностей:

require () идентичен include (), за исключением того, что в случае сбоя он также приведет к фатальному E_ERROR ошибка уровня. Другими словами, он остановит скрипт, тогда как include () выдает только предупреждение ( E_WARNING ), которое позволяет скрипту продолжить работу.

9
ответ дан 5 December 2019 в 08:24
поделиться

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

0
ответ дан 5 December 2019 в 08:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: