本文介绍了用于以下语法的解析器程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
编写使用以下生成和操作的解析器(包括Yacc和Lex文件):
Write a parser (both Yacc and Lex files) that uses the following productions and actions:
S -> cSS {print "x"} S -> a {print "y"} S -> b {print "z"}
指示当输入<$ c时将打印的字符串$ c> cacba 。
我得到这个错误:当我给它输入,它说有效的输入和语法错误。
I am getting this error: when I give input to it, it says valid input and also says syntax error.
我的扫描程式码是这个
%{ #include "prac.h" %} %% [c] {return C; } [a] {return A; } [b] {return B; } [ \t] ; \n { return 0; } . { return yytext[0]; } %% int yywrap(void) { return 1; }
我的yacc代码是:
%{ #include <stdio.h> %} %token A B C %% statement: S {printf("Valid Input"); } ; S: C S S {printf("Print x\n");} | A {printf("Print y\n");} | B {printf("Print z\n");} ; %% int main() { return yyparse(); } yyerror(char *s) { printf("\n%s\n",s); printf("Invalid Input"); fprintf(stderr,"At line %d %s ",s,yylineno); }
如何解决这个问题?
推荐答案
()
@ChrisDodd写道:
@ChrisDodd wrote:
@Cyclone写道:
@Cyclone wrote:
OP写道:
@rici写道:
这篇关于用于以下语法的解析器程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!