元音上下文无关语法定义YACC

时间:2016-04-17 17:06:06

标签: yacc lex context-free-grammar

我正在编写一个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的正确定义

1 个答案:

答案 0 :(得分:1)

您不需要针对您的问题的无上下文语法,只需要定期表达。您正在使用错误的工具来完成工作。 flex(1)

中有三行
%%
[aeiou] printf("%\n", yytext);
.|\n ;