📄 nepc.y.bak
字号:
%{#include <stdlib.h>#include <stdio.h>#include <assert.h>#include "nepc.h"%}%union{int iValue;double fValue;char *pStr;long *nPtr;int type_int;float type_float;double type_double;long type_long;};%token <type_int> TYPE_INT%token <type_float> TYPE_FLOAT%token <type_double> TYPE_DOUBLE%token <type_long> TYPE_LONG%token <pStr> TYPE_STRING%token <iValue> TYPE_STRUCT%token <iValue> INTEGER%token <fValue> FLOAT%token <pStr> VARIABLE %token <pStr> STRING%token <iValue> ACOS ASIN ATAN CEIL COS COSH EXP FABS FLOOR %token <iValue> LOG LOG10 POW10 SIN SINH SQRT TAN TANH%type <nPtr> stmt expr /*function*/%token EXIT ERASE CLEAR LIST HELP DEC HEX OCT%token WHILE IF PRINT FOR%nonassoc IFX%nonassoc ELSE%left OR%left AND%left GE LE EQ NE '>' '<'%left '+' '-'%left '*' '/' '%'%left PP SS%nonassoc UMINUS%%program: init parsed EXIT { } ;init: /* NULL*/ { printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>begin !");} ;parsed: parsed stmt { sentenceArray[sentenceArrayLen]=$2; sentenceArrayLen++; } /* | parsed error separator { yyerrok; WAITINPUT;} comment by chenbp*/ | /* NULL */ ;stmt: separator { $$ = opr(';', 2, NULL, NULL); } | PRINT expr separator { $$ = opr(PRINT, 1, $2); } | VARIABLE '=' expr separator { if(NULL==var($1,G_level,G_line)) { YYABORT; } $$ = (($3 == NULL)?NULL:(opr('=', 2, var($1,G_level,G_line), $3))); printf("level:%d\n",G_level); } | type_define VARIABLE '=' expr separator { if($4 == NULL) { $$=NULL; printf("null !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); } else { nodeType *p=opr('=', 2, var($2,G_level,G_line), $4); if(p==NULL) { printf("null 22 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); } $$=p; printf("install the vaiable level:%d\t line:%d\n",G_level,G_line); } }type_define: TYPE_INT |TYPE_FLOAT |TYPE_DOUBLE |TYPE_LONG |TYPE_STRING;separator: ';' ;expr: INTEGER { $$ = con_int($1); } | FLOAT { $$ = con_flt($1); } | STRING { $$ = con_str($1); } | VARIABLE { $$ = var($1,G_level,G_line);if($$==NULL)YYABORT; } | '-' expr %prec UMINUS { $$ = opr(UMINUS, 1, $2); } | expr '+' expr { $$ = opr('+', 2, $1, $3); } | expr '-' expr { $$ = opr('-', 2, $1, $3); } | expr '*' expr { $$ = opr('*', 2, $1, $3); } | expr '/' expr { $$ = opr('/', 2, $1, $3); } | expr '<' expr { $$ = opr('<', 2, $1, $3); } | expr '>' expr { $$ = opr('>', 2, $1, $3); } | expr '%' expr { $$ = opr('%', 2, $1, $3); } | expr AND expr { $$ = opr(AND, 2, $1, $3); } | expr OR expr { $$ = opr(OR, 2, $1, $3); } | expr GE expr { $$ = opr(GE, 2, $1, $3); } | expr LE expr { $$ = opr(LE, 2, $1, $3); } | expr NE expr { $$ = opr(NE, 2, $1, $3); } | expr EQ expr { $$ = opr(EQ, 2, $1, $3); } | '(' expr ')' { $$ = $2; }%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -