Код: Выделить всё
%{
#include
#include
#include
#include
using namespace std;
vector tokens;
%}
%%
def tokens.push_back("CREATE_FUNC");
int tokens.push_back("INT");
string tokens.push_back("STRING");
char tokens.push_back("char");
ret tokens.push_back("EXIT_CODE");
"(" tokens.push_back("OPEN_PARA");
")" tokens.push_back("CLOSE_PARA");
end return 0;
[ \t\r\n\f]+
.
%%
int yywrap(){
return 0;
}
int main(int argc, char** argv){
if (argv[1] == NULL){
return 1;
}
FILE* ptr = fopen(argv[1], "r");
yyin = ptr;
yylex();
fclose(ptr);
}
Пояснение: я хочу вернуть текущий символ назад, если он не соответствует пробелам или любому другому ключевому слову, например def и int. Или, проще говоря, нажмите текущий символ, на котором находится гибкий токенизатор, с помощью «.» Правило в вектор токенов выше.
Подробнее здесь: https://stackoverflow.com/questions/797 ... to-the-tok
Мобильная версия