如何在c++中对字符串进行标记(如ply.Python中的lex)



如何使用c++轻松标记文档或字符串?我熟悉Python中的ply.lex模块,但我找不到c++的任何东西。是否有c++库可以使用lexyacc ?或者是否有其他更好的库或更容易做到这一点的方法?

flexlex相当于ply.lexflex:

示例
%{
#include <stdio.h>
%}
%option noyywrap
%%
"+"               { puts("token: +"); }
"-"               { puts("token: -"); }
[0-9]+            { printf("token: %sn", yytext); }
" "               { /* empty */ }
[n|rnt]       { /* 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
>

最新更新