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

Vowels Context free grammar definition YACC

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

您的问题不需要上下文无关语法,只需要正则表达式。您为这项工作使用了错误的工具。在flex(1):

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