为什么lex不能识别我的正则表达式定义

时间:2012-01-31 20:31:30

标签: c lex

我这样做是:

    /* regular definitions */

    DECLARATIONS                declarations
    ENDDECLARATIONS         (enddeclarations)
    INT                     (int)
    METHOD                  (method)
    PROGRAM                 (program)

并且

    {DECLARATIONS}          {yycolumn+=yyleng;return (DECLARATIONSnum);}

认识到它,但我发现它们不被认可.....如果我这样做:

    "declarations"          {yycolumn+=yyleng;return (DECLARATIONSnum);}

有效。我真的不明白为什么......

示例输入如下:

   program p2;
   class Test {
    method void main()
     declarations
        int x;

目前就像是:

    program p2
    5       1         SEMInum
    class Test 
    6       1         LBRACEnum
    method void main
    7       1         LPARENnum

程序,类应该被识别为保留字,但它们不被识别....

1 个答案:

答案 0 :(得分:4)

DECLARATION             declarations

奇异

{DECLARATIONS}          {yycolumn+=yyleng;return (DECLARATIONSnum);}

复数