Как токенизировать строку в C ++ (как ply.lex в Python)?

Как мне легко маркировать документ или строку с помощью C ++?
Я знаком с ply.lex модуль в Python, но я не смог найти ничего для C ++. Есть ли библиотека C ++, которая может использовать lex а также yacc? Или есть другая лучшая библиотека или способ сделать это легко?

0

Решение

flex а также lex являются эквивалентом ply.lex, Пример flex:

%{
#include <stdio.h>
%}

%option noyywrap

%%
"+"               { puts("token: +"); }
"-"               { puts("token: -"); }
[0-9]+            { printf("token: %s\n", yytext); }
" "               { /* empty */ }
[\n|\r\n\t]       { /* empty */ }
.                 { fprintf(stderr, "Tokenizing error: synatx error '%c'\n", *yytext);
yyterminate(); }
%%

int main(int argc, char **argv)
{
yylex();
return 0;
}

компилирования:

> flex example.l
> gcc -Wall lex.yy.c -o lex
> lex
100 - 2 + 34
token: 100
token: -
token: 2
token: +
token: 34
>
2

Другие решения


По вопросам рекламы [email protected]