Использование токенов в Lex во встроенной системе - PullRequest
1 голос
/ 07 марта 2009

Я пытаюсь написать анализатор конфигурационных файлов для использования в нестандартной среде Си. В частности, я не могу полагаться на утилиты, предоставляемые <stdio.h>.

Я хочу использовать Flex, но мне нужно использовать собственные структуры ввода, а не указатели <stdio.h> FILE.

Ответы [ 2 ]

2 голосов
/ 08 марта 2009

вы можете определить свой собственный метод ввода, определив метод YY_INPUT:

 %{
     #define YY_INPUT(buf,result,max_size) \
         { \
         int c = getchar(); \
         result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \
         }
     %}
1 голос
/ 08 марта 2009

Ragel - это универсальный компилятор конечного автомата, который можно использовать сгенерированный код внутри функции C. Он имеет специальную поддержку для построения токенизаторов.

...