元音上下文无关文法定义 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 ;
我正在编写一个 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 ;