lex解析器用pascal编写的程序

时间:2014-05-31 10:03:16

标签: c lex

我在使用Lex编写Pascal分析器时遇到问题,解析后应打印到stdout有关正确/错误代码结构的信息,以及包含程序行数,使用的变量数,使用数量的摘要在if,while,repeat等等。

我不知道如何去做。

1 个答案:

答案 0 :(得分:0)

考虑这个简短的例子:

  "{"           { return(LCURLY);       }
  "}"           { return(RCURLY);       }
  ","           { return(COMMA);        }
  ":"           { return(COLON);        }
  \.            { return(DOT);          }
  "+"           { return(PLUS);         }
  "-"           { return(MINUS);        }
  "*"           { return(MULTIPLY);     }
  "/"           { return(DIVIDE);       }

每当某个正则表达式模式匹配时,右边的动作就会发生。只需添加printf()即可报告检测到正确的令牌。

"/"         { printf("Token %s \n", yytext);return(DIVIDE);     }

最后一行应该是:

 .          { printf("Error not recognized: %s\n", yytext);

最后一行当然是指任何不正确的令牌 - >我写的没有正则表达式匹配的任何令牌。