Вы можете найти определение:
YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
в ".c" автоматически генерируемом файле лексическим сканером, называемым "lex" (или flex). Таким образом, если вы не собираетесь писать их самостоятельно, вам потребуется mylex.l для применения к lex, и он обычно создает файл с именем lex.yy.c.
Этот файл может использоваться вместе с синтаксическим парсером ".y", который описывает вашу грамматику. В другом ".c", автоматически сгенерированном этим другим инструментом, называемым "bison" или "yacc", вы найдете:
int yyparse (void *YYPARSE_PARAM);
Вы можете указать yacc создать 2 файла: parser.c и parser.h, оба из другого файла, который вам нужно написать, скажем, mygrammar.y.
Итак, вкратце, вам нужно написать:
А затем запустите:
- flex mylex.l ==> дает вам lex.yy.c
- bison --defines = parser.h --output = parser.c mygrammar.y ==> дает вам parser.h parser.c
Вы можете попытаться найти в проекте файлы, такие как mylex.l и mygrammar.y (возможно, с лучшими именами). Если в проекте не указаны источники (.l и .y) и сканер / анализатор (lex.yy.c и parse.c / parser.h), вам необходимо написать их.
Надеюсь, это поможет вам.
Беко