本文介绍了用于以下语法的解析器程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

编写使用以下生成和操作的解析器(包括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写道:

这篇关于用于以下语法的解析器程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-10 10:38