Использование токенов в Lex во встроенной системе
-
05-07-2019 - |
Вопрос
Я пытаюсь написать синтаксический анализатор файла конфигурации для использования в нестандартной среде Си. В частности, я не могу полагаться на утилиты, предоставляемые <stdio.h>
.
Я собираюсь использовать Flex, но мне нужно использовать собственные структуры ввода, а не указатели <=> FILE.
Решение
вы можете определить свой собственный метод ввода, определив метод YY_INPUT:
%{
#define YY_INPUT(buf,result,max_size) \
{ \
int c = getchar(); \
result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \
}
%}
Другие советы
Ragel - это универсальный компилятор конечного автомата, который можно использовать сгенерированный код внутри C функция. Он имеет специальную поддержку для построения токенизаторов.
Не связан с StackOverflow