zoukankan      html  css  js  c++  java
  • flex与bison

    记录一些个人认为有用的东西

    lex程序包含三个部分

    声明

    %%

    翻译规则

    %%

    辅助过程

    在声明过程中 %{ 和 }%之间的部分会被照抄到生成的C语言开头部分。

    翻译规则:

      模式处在每一行的开头,接着是匹配时执行的C代码,使用{}括住。(模式必须在行首出现,以空白开始的行都会被照抄)

      yytext总是指向本次匹配的输入文本。

      在代码中如果动作有返回,则词法分析会在下次调用yylex()时继续。

    模式举例

      [A-Za-z]+   用来匹配一个单词,方括号表示为字符类,+表示匹配一个或多个该类。

      .       点号表示任意一个字符。

      [^ ]+    在字符类开始部分的符号^是指匹配任意一个不在字符类里面的字符。

      “+”      一般用来表示匹配某个特定字符或字符串。

    bison程序包含三部分:声明、规则、C语言代码。

    声明部分会被拷贝到C语言代码开头,通过%{}%来声明

    %token声明记号名称,通常记号使用大写字母

    第二部分

      使用单一冒号,且用分号;表示结束

  • 相关阅读:
    UESTC
    Education Round 8 A
    Gym
    Gym
    hdoj 1159 Common Subsequence
    UVA
    UESTC
    51Nod 1068 Bash游戏 V3 (这规律不好找)
    51Nod 1066 Bash游戏
    51Nod 1002 数塔取数问题
  • 原文地址:https://www.cnblogs.com/wshr007/p/10932031.html
Copyright © 2011-2022 走看看