Linux.by
https://forum.linux.by/

flex and C++
https://forum.linux.by/viewtopic.php?f=6&t=2741
Страница 1 из 1

Автор:  Anonymous [ 23 апр 2004, 23:03 ]
Заголовок сообщения:  flex and C++

народ помогите плиз.
есть прога на С++ для консоли в которой организован ввод комманд и т.п.
надо эти комманды отлавливать с помощью flex'a(lex'a) определять че за комманда и в соответствии с этим заполнять структуру:
struct CommandStruct
{
char command[255]; //собственно комманда
int type;
char message[255];
char dest[255];
};
я пытаюсь переодпределить функцию yylex() и использовать структуру к примеру вот таким образом:

%{
#include <string.h>
#include "client_globals.h" //здесь описанна структура CommandStruct

#define YY_DECL int ScanCommand(scmd) struct CommandStruct* scmd;
YY_BUFFER_STATE newyyin;
%}

%option noyywrap
%x command
%%

newyyin= yy_scan_string(scmd->command);

"/" BEGIN(command);
<command>"send"|"s " {
scmd->type=2;
//ну и все в таком роде
return 2;

}

yy_delete_buffer(newyyin);
return 0;
%%

ну и в результате конечно ничего не работает. даже сие не может нормально откомпилироваться выдавая ошибку parser error во всех местах где идет обращение к элементам структры.

далее как это так скрестить с прогой на C++ чтобы работало вызывая функцию ScanCommand с соотв. параметром?

Автор:  Anonymous [ 27 апр 2004, 18:57 ]
Заголовок сообщения: 

Надо твой лексовый файл *.l откомпилировать лексом в С-шный код. Если я не ошибаюсь, желательно также extern "C" вокруг объявлений функций. Итого получится функция yylex которую ты сможешь использовать в своих целях.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/