码迷,mamicode.com
首页 > 其他好文 > 详细

应注意的Flex&Bison潜规则

时间:2014-07-01 20:17:12      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:style   color   文件   type   res   amp   

1.Flex的二义性模式

  • 语法分析器匹配输入时匹配尽可能多的字符串
  • 如果两个模式都可以匹配的话,匹配在程序中更早出的模式。

    针对这一点的理解,在语法分析文件当中,token的识别,应从特殊到一般的过程来编写(同时为了可以加入日志来打印当前拆分的token来debug这种情况),例如,实现语法分析过程中,遇到词法拆分column is not null,应将null的词法写到标识符识别的前台,否则会发生将null先拆分成了identifer而非null终节符。

    NULL {
    malloc_node(yylval->node, ((ParseResult*)yyextra)->memoryPool, T_NULL, 0);
    return NULLX;
    }

    {identifer} {
      int ret = NAME;
    ASTNode* node = NULL;
    malloc_node(node, ((ParseResult*)yyextra)->memoryPool, T_NAME,0);
    ....
    }

  2. 语法分析文件当中%token 定义的终结符和%type 定义的非终结符,不需要手动通过enum来进行声明,在bison工具会自动根据语法分析文件中定义情况,自动生成相应的YYTOKENTYPE 定义。

应注意的Flex&Bison潜规则,布布扣,bubuko.com

应注意的Flex&Bison潜规则

标签:style   color   文件   type   res   amp   

原文地址:http://www.cnblogs.com/syru/p/3817039.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!