我在使用Lex编写Pascal分析器时遇到问题,解析后应打印到stdout有关正确/错误代码结构的信息,以及包含程序行数,使用的变量数,使用数量的摘要在if,while,repeat等等。
我不知道如何去做。
答案 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);
最后一行当然是指任何不正确的令牌 - >我写的没有正则表达式匹配的任何令牌。