如何在C++中对字符串进行词法分析(类似Python中的ply.lex)?

0 投票
1 回答
579 浏览
提问于 2025-04-18 13:20

我想知道如何用C++简单地把文档或字符串分词。 我对Python中的ply.lex模块很熟悉,但在C++中找不到类似的东西。有没有什么C++库可以使用lexyacc?或者有没有其他更好的库或方法可以轻松实现这个功能?

1 个回答

2

flexlex 就相当于 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
>

撰写回答