运算符优先级:(从高到低)———————————————————————— ( ) 括号 / * % 除乘余 + - 加减————————————————————————
%option noyywrap
%{
#include<stdio.h>
#include<stdlib.h>%}
%%
[0-9]+ { printf("%s ",yytext); }
[()*/%+-] { printf("%s ",yytext); }
[[:space:]] {}
. { printf("nErrorn");exit(1); }
%%
int main()
{
yylex();
printf("n");
return 0;
}
import sys
line=sys.stdin.readline()
line2=sys.stdin.readline()
if len(line2)>0:
sys.stderr.write("Syntax Error after : ")
sys.stderr.write(line)
sys.stderr.write("n")
exit(1)
lis=line.split(' ')
lis.pop()
lis_old=lis[:]
lis.reverse()
oplis=[]
rpnlis=[]
str=''
arith_op="+-*/%" # '(' ')' [0-9]+
prior={ '/':1,'*':1,'%':1, '+':2,'-':2 }
while len(lis)>0:
str=lis.pop()
if str=='(':
oplis.append('(')
elif str.isdigit():
rpnlis.append(str)
elif len(str)==1 and arith_op.find(str[0])!=-1:
if len(oplis)==0 or oplis[len(oplis)-1]=='(':
oplis.append(str)
else:
while len(oplis)>0 and oplis[len(oplis)-1]!='('
and prior[oplis[len(oplis)-1]]<=prior[str]:
rpnlis.append(oplis.pop())
oplis.append(str)
elif str==')':
while len(oplis)>0 and oplis[len(oplis)-1]!='(':
rpnlis.append(oplis.pop())
if len(oplis)>0:
oplis.pop()
else:
sys.stderr.write("Syntax Error while translating : Expected '('")
sys.stderr.write("n")
exit(2)
else:
sys.stderr.write("Syntax Error : unkown notation -->")
sys.stderr.write(str)
sys.stderr.write("n")
exit(3)
while len(oplis)>0 :
if oplis[len(oplis)-1]!='(':
rpnlis.append(oplis.pop())
else:
sys.stderr.write("Syntax Error while translating : Unexpected '('")
sys.stderr.write("n")
exit(1)
print lis_old
for i in lis_old:
sys.stdout.write(i)
print ''
print rpnlis
for i in rpnlis:
print i,
print ''
exit(0)
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有