我正在编写一个YACC程序,用于定义给定字符串中元音的CFG,我的代码尝试如下
%{
#include <stdio.h>
%}
%union{
char c;
}
%token <c> VOW
%%
cha : 'a' { printf("a\n"); }
| 'e' {printf("e\n");}
| 'i' {printf("i\n");}
| 'o' {printf("o\n");}
| 'u' {printf("u\n");}
;
%%
int main(void) {return yyparse();}
int yylex(void) {return getchar();}
void yyerror(char *s) {fprintf(stderr, "%s\n",s);}
这是元音的CFG的正确定义
答案 0 :(得分:1)
您不需要针对您的问题的无上下文语法,只需要定期表达。您正在使用错误的工具来完成工作。 flex(1):
中有三行%%
[aeiou] printf("%\n", yytext);
.|\n ;