Использование токенов в Lex во встроенной системе

StackOverflow https://stackoverflow.com/questions/622389

  •  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 функция. Он имеет специальную поддержку для построения токенизаторов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top