的功能扩张....
来源:互联网 发布:ubuntu sudo密码忘记 编辑:程序博客网 时间:2024/04/28 17:14
%{
#include <stdlib.h>
#include "entint.tab.h"
extern long yylval;
%}
D [0-9]
N [1-9]
O [0-7]
H [0-9a-fA-F]
%%
"+" {return(ADDOP);}
"-" {return(SUBOP);}
"*" {return(MULOP);}
"/" {return(DIVOP);}
"**" {return(POWOP);}
"!" {return(FACTOP);}
"(" {return(LP);}
")" {return(RP);}
end {return(END);}
{N}{D}* |
0{O}* |
0(X|x){H}+ {//将字符串??成?整型数
yylval = strtol((char*)yytext,(char**)NULL, 0);
return(NUMBER);
}
[T] ;
n {return(NL);}
. {return(yytext[0]);}
#include <stdlib.h>
#include "entint.tab.h"
extern long yylval;
%}
D [0-9]
N [1-9]
O [0-7]
H [0-9a-fA-F]
%%
"+" {return(ADDOP);}
"-" {return(SUBOP);}
"*" {return(MULOP);}
"/" {return(DIVOP);}
"**" {return(POWOP);}
"!" {return(FACTOP);}
"(" {return(LP);}
")" {return(RP);}
end {return(END);}
{N}{D}* |
0{O}* |
0(X|x){H}+ {//将字符串??成?整型数
yylval = strtol((char*)yytext,(char**)NULL, 0);
return(NUMBER);
}
[T] ;
n {return(NL);}
. {return(yytext[0]);}
%{
#include <stdio.h>
#define YYSTYPE long
%}
%token NUMBER
%token NL
%token END
%token LP
%token RP
%left ADDOP SUBOP
%left MULOP DIVOP
%right POWOP
%right FACTOP
%right UMINUS
%start s
%%
s :list {printf("bye-bye... ");}
;
list :/*empty*/
{printf("welcome to ecalc. ");}
|list line
{printf("end expression or end... ");}
;
line :expr NL
{printf("%ld,0x%lx,0%lo ",$1,$1,$1);}
|END NL
{
printf("bye-bye... ");
YYACCEPT;
}
|error NL
;
expr :expr ADDOP expr
{$$ = $1 + $3;}
|expr SUBOP expr
{$$ = $1 - $3;}
|expr MULOP expr
{$$ = $1 * $3;}
|expr DIVOP expr
{
if ($3 == 0){
printf("zero divide ");
YYERROR;
}
$$ = $1 / $3;
}
|expr POWOP expr
{
if ($3 < 0){
printf("POWOP divide ");
YYERROR;
}
$$ = lpower($1,$3);
}
|expr FACTOP
{
if ($1 < 0){
printf("FACTOP divide ");
YYERROR;
}
lfact($1);
}
|SUBOP expr %prec UMINUS
{$$ = -$2;}
|LP expr RP
{$$ = $2;}
|NUMBER
{$$ = $1;}
;
%%
int yyerror(char *str){
printf("%s ", str);
}
long lpower(long x, long y){
long i ,pw;
if (x == 0){
return 0;
}
else{
pw = 1;
for (i = y;i;--i){
pw *= i;
}
return (pw);
}
}
long lfact(long x){
long i,fc;
for (fc = 1,i = x;i;--i){
fc *= i;
}
return (fc);
}
#include <stdio.h>
#define YYSTYPE long
%}
%token NUMBER
%token NL
%token END
%token LP
%token RP
%left ADDOP SUBOP
%left MULOP DIVOP
%right POWOP
%right FACTOP
%right UMINUS
%start s
%%
s :list {printf("bye-bye... ");}
;
list :/*empty*/
{printf("welcome to ecalc. ");}
|list line
{printf("end expression or end... ");}
;
line :expr NL
{printf("%ld,0x%lx,0%lo ",$1,$1,$1);}
|END NL
{
printf("bye-bye... ");
YYACCEPT;
}
|error NL
;
expr :expr ADDOP expr
{$$ = $1 + $3;}
|expr SUBOP expr
{$$ = $1 - $3;}
|expr MULOP expr
{$$ = $1 * $3;}
|expr DIVOP expr
{
if ($3 == 0){
printf("zero divide ");
YYERROR;
}
$$ = $1 / $3;
}
|expr POWOP expr
{
if ($3 < 0){
printf("POWOP divide ");
YYERROR;
}
$$ = lpower($1,$3);
}
|expr FACTOP
{
if ($1 < 0){
printf("FACTOP divide ");
YYERROR;
}
lfact($1);
}
|SUBOP expr %prec UMINUS
{$$ = -$2;}
|LP expr RP
{$$ = $2;}
|NUMBER
{$$ = $1;}
;
%%
int yyerror(char *str){
printf("%s ", str);
}
long lpower(long x, long y){
long i ,pw;
if (x == 0){
return 0;
}
else{
pw = 1;
for (i = y;i;--i){
pw *= i;
}
return (pw);
}
}
long lfact(long x){
long i,fc;
for (fc = 1,i = x;i;--i){
fc *= i;
}
return (fc);
}
- 的功能扩张....
- 数据结构的扩张
- 随机网络的扩张
- Google的收购扩张史
- Google的收购扩张史
- Google的收购扩张史
- 算法导论-数据结构的扩张
- 奇虎360的扩张
- 云时代的海外扩张
- 对基础数据结构的扩张
- 第十四章 数据结构的扩张
- 祖先的荣耀,扩张的极限
- 算法导论 ch14 数据结构的扩张
- 算法导论第十四章:数据结构的扩张
- 美国民主扩张后的伊拉克
- 算法导论第十四章数据结构的扩张
- 快速扩张网站的十个妙招
- 算法导论笔记:14数据结构的扩张
- 在solaris上安装putty (Build putty on Solaris)
- RHCE笔记1
- 上了两周班了。。。
- RHCE笔记2
- RHCE笔记3
- 的功能扩张....
- RH133题库
- Linux相关图书选购指南
- RH033题库
- [双语]什么叫“蓝牙”?
- RH253题库
- rhce认证笔记[原创连载1-1/5]
- dorado 中的日期--》oracle中的日期
- 网站列表之Java