我在使用 Lex 编写 Pascal 分析器时遇到问题,解析后应将有关正确/不正确代码结构的信息以及包含程序行数、使用的变量数、使用的数量的摘要打印到 stdout在 if、while、repeat 等中。
我不知道该怎么办。
最佳答案
考虑这个简短的例子:
"{" { 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);
最后一行当然意味着任何不正确的标记 -> 我没有编写正则表达式来匹配的任何标记。
关于c - lex 解析器解析用 pascal 编写的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23968692/