繁体   English   中英

如何在C ++中标记字符串(如Python中的ply.lex)?

[英]How to tokenize a string in C++ (like ply.lex in Python)?

如何使用C ++轻松标记文档或字符串? 我熟悉Python中的ply.lex模块,但找不到C ++的任何东西。 有没有可以使用lexyacc的C ++库? 还是有另一个更好的库或轻松实现此目的的方法?

flexlexply.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
>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM