Поиск очень простого примера обработки ошибок ANTLR при генерировании C код

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

Я предпочел бы обнаруживать и обрабатывать плохо введенный в лексическом анализаторе/синтаксическом анализаторе, например,

/* lexer tokens */
foo : "FOO";
bar : "BAR";
baz : "BAZ";
/* grammar*/
grammar : foo "=" BAZ 
        | foo "=" BAR 
        | <some non-existent Antrl-else> :  {printf(stderr, "bad input\n");}
        ;

Хорошо, если я не могу поймать его в лексическом анализаторе/синтаксическом анализаторе, кажется, что я должен использовать displayRecognitionError() но как??

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

Спасибо!


Хорошо, щедрость, ура!

Но только для реального, рабочего ответа, с реальным, рабочим кодом. Никакой "метод использования X()" без wxample.

5
задан Mawg 9 January 2012 в 02:06
поделиться

2 ответа

Работа с исключением распознавания в Java будет выглядеть следующим образом:

grammar X;

// ...

@rulecatch{
  catch(RecognitionException rex) {
    // do something
  }
}

// parser rules

// lexer rules 

Другими словами, просто добавьте некоторый пользовательский код на C внутри @rulecatch{ ... }.

5
ответ дан 13 December 2019 в 05:36
поделиться

Что вы, скорее всего, ищу, это DisplayReCognivityError () Функция. Эта функция вызывается в случаях, которые вас интересуют, и является частью выполнения C.

Если вы хотите увидеть пример того, как использовать эту функцию, посмотрите этот пост списка рассылки . Хотя этот код смешивает C и C ++, вы должны быть в состоянии отработать, что вам нужно.

7
ответ дан 13 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

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