myyacc.y

来自「一个使用flex和bison的小例子」· Y 代码 · 共 65 行

Y
65
字号
%{
#include <ctype.h>
#include<stdio.h>
#define MSDOS
int linecount;
extern int yylex();
extern int yyerror();
%}
%union{
   char chr;
   char *str;
   int integer;
   float real;
   double dbl;
   }
%token number
%type <real> expr number
%left '+' '-'
%left '*' '/'
%right uminus
%%
lines:	lines expr'\n'
	{
	 printf("line %d:%g\n",linecount++,$2);
	}
	|lines'\n'
	{
	 linecount++;
	}
	|
	;
expr:   expr'+'expr
	{
	 $$=$1+$3;
	}
	|expr '-' expr
	{
	 $$=$1-$3;
	}
	|expr '*' expr
	{
	 $$=$1*$3;
	}
	| expr '/' expr
	{
	 $$=$1/$3;
	}
	| '(' expr ')'
	{
	 $$=$2;
	}
	| '-' expr %prec uminus
	{
	 $$=-$2;
	}
	| number
	;
%%
int yyerror(s)
char *s;
{
 fprintf(stderr,"syntactic error:%s\n",s);
 return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?