Flex备忘

作者: louyang | 来源:发表于2019-06-30 14:25 被阅读0次
1 提出问题

例如, 有这样一段字符串:

VAR ics142: INTEGER; // variable declaration

假设我们想把它变成:

VAR  ID(ics142)  COLON  ID(INTEGER)  SEMICOLON

我们可以使用gnu flex.

2 准备试验环境

Fedora 30

$ sudo dnf install flex
$ sudo dnf install flex-devel
3 设置规则
    // An example of using the flex C++ scanner class.

%option C++ noyywrap

%{
%}

alpha   [A-Za-z]
dig [0-9]
colon   :
semicolon   ;
variable  VAR
comment   \/\/({alpha}|{ws})*
ws  [ \t]+
name    ({alpha}|{dig}|\$)({alpha}|{dig}|\_|\.|\-|\/|\$)*

%%
{variable}  std::cout << YYText() << " ";
{ws}            /* skip blanks and tabs */
{comment}   /* skip blanks and tabs */
{name}      std::cout << "ID(" << YYText() << ") ";
{colon}         std::cout << "COLON ";
{semicolon}     std::cout << "SEMICOLON ";
%%

int main( int /* argc */, char** /* argv */ )
{
    FlexLexer* lexer = new yyFlexLexer;
    lexer->yylex();
    return 0;
}
4 编译
g++ lex.yy.cc -lfl
5 执行
echo "VAR ics142: INTEGER; // variable declaration" | ./a.out
6 总结
image.png

参考:
http://alumni.cs.ucr.edu/~lgao/teaching/flex.html
https://github.com/westes/flex/blob/master/examples/testxxLexer.l

相关文章

  • Flex备忘

    1 提出问题 例如, 有这样一段字符串: 假设我们想把它变成: 我们可以使用gnu flex. 2 准备试验环境 ...

  • Flex布局备忘参考

    Flex 是 Flexible Box 的缩写,意为"弹性布局",功能强大,目前网页布局中使用频率极高。但Flex...

  • flex布局备忘录

    flex布局在父容器和子容器上都有设置的属性 父容器上的属性 子容器上的属性

  • [微信小程序]所谓布局

    好记性不如烂笔头 小程序布局大多以flex为主,即flexible box 弹性盒子,所以在此记录以作备忘。不轻视...

  • CSS基础记录

    Flex flex和inline-flex flex-direction flex-wrap flex-flow ...

  • flex布局 flex, flex-grow,flex-shri

    flex是flex, flex-grow,flex-shrink, flex-basis 的缩写形式:flex-...

  • Flex 容器布局

    flex : none | flex-grow | flex-shrink | flex-basis flex:1...

  • flex 的三个参数 flex:1 0 auto

    flex :flex-group flex-shirk flex-basis ① flex-group 剩余空...

  • flex布局的伸缩规则

    flex: flex-grow flex-shrink flex-basis; flex-grow:变大 fle...

  • 2018-10-10

    flex布局 display: flex; //水平 flex-direction: row;(默认) flex-...

网友评论

    本文标题:Flex备忘

    本文链接:https://www.haomeiwen.com/subject/gwpvcctx.html