当前位置: 首页 > news >正文

岳阳企业网站定制开发15个常见关键词

岳阳企业网站定制开发,15个常见关键词,宁波网站建设设计至诚服务,学校信息门户网站建设一、实验目的 1#xff0e;熟悉体系结构的风格的概念 2#xff0e;理解和应用管道过滤器型的风格。 3、理解解释器的原理 4、理解编译器模型 二、实验环境 硬件#xff1a; 软件#xff1a;Python或任何一种自己喜欢的语言 三、实验内容 1、实现“四则运算”的简易翻译器。…一、实验目的 1熟悉体系结构的风格的概念 2理解和应用管道过滤器型的风格。 3、理解解释器的原理 4、理解编译器模型 二、实验环境 硬件  软件Python或任何一种自己喜欢的语言 三、实验内容 1、实现“四则运算”的简易翻译器。 结果要求 1实现加减乘除四则运算允许同时又多个操作数如23*5-6 结果是11 2被操作数为整数整数可以有多位 3处理空格 4输入错误显示错误提示并返回命令状态“CALC” 图1    实验结果示例 加强练习 1、有能力的同学可以尝试实现赋值语句例如x23*5-6返回x11。注意要实现解释器的功能而不是只是显示 2、尝试实现自增和自减符号例如x  2、采用管道-过滤器Pipes and Filters风格实现解释器                       图2  管道-过滤器风格                 图 3  编译器模型示意图 本实验实现的是词法分析和语法分析两个部分。 四、实验步骤 INTEGER, PLUS, MINUS, MUL, DIV, LPAREN, RPAREN, EOF,VARIABLE,EQUALITY,INCREMENT,REDUCE (INTEGER, PLUS, MINUS, MUL, DIV, LPAREN, RPAREN, EOF,VARIABLE,EQUALITY,INCREMENT,REDUCE) class Token(object): def __init__(self,type,value): self.type type self.value value # toString def __str__(self): return Token({type},{value}).format( typeself.type, value self.value )class Lexer(object): # 词法分析器 # 给每个词打标记 # text为输入的表达式 def __init__(self, text): self.text text # pos为当前位置 self.pos 0 # current_char为当前字符 self.current_char self.text[self.pos] # 取字符错误时调用的方法 def error(self): # raise 抛出异常 raise Exception(Invalid Char) #前进的方法即取下一个字符 def advance(self): # 往下走取值 self.pos 1 if self.pos len(self.text) - 1: self.current_char None else: self.current_char self.text[self.pos] def variable(self): # 变量处理 variable while self.current_char is not None and self.current_char.isalpha(): variable variable self.current_char # 往下走取值 self.advance() # 取值完毕后将该变量存入字典中 if variable not in variables: variables[variable] None return variable def integer(self): # 多位整数处理 result while self.current_char is not None and self.current_char.isdigit(): result result self.current_char # 往下走取值 self.advance() return int(result) # 处理输入时的非法空格 def deal_space(self): # 循环遍历遇到空格则跳过取下一个字符 while self.current_char is not None and self.current_char.isspace(): self.advance() def get_next_token(self): # 打标记:1pos1,2返回Token(类型数值 while self.current_char is not None: # 空格处理 if self.current_char.isspace(): self.deal_space() # 数字处理判断是否为多位整数 if self.current_char.isdigit(): return Token(INTEGER, self.integer()) # 加号处理Plus if self.current_char : # # 判断是自增还是加号 # if self.get_next_token() : # self.advance() # return Token(PLUS, ) self.advance() return Token(PLUS, ) # 减号处理Minus if self.current_char -: self.advance() return Token(MINUS, -) # 左括号 if self.current_char (: self.advance() return Token(LPAREN,() # 右括号 if self.current_char ): self.advance() return Token(RPAREN,)) # 乘号 if self.current_char *: self.advance() return Token(MUL,*) # 除号 if self.current_char /: self.advance() return Token(DIV,/) # 若是判断出字符则进入变量获取的方法 if self.current_char.isalpha(): return Token(VARIABLE,self.variable()) # 等号 if self.current_char : self.advance() return Token(EQUALITY,EQUALITY) # # 自增 # if self.current_char : # self.advance() # return Token(EQUALITY,EQUALITY) # 其余均为非法字符 self.error() # 取到None字符 返回一个空的Token 表示循环结束 return Token(EOF, None)class Interpreter(object): # 句法分析 # 语法树 # 语法树中的一个参数为词法分析器Lexer def __init__(self, lexer): self.lexer lexer self.current_token self.lexer.get_next_token() def error(self): raise Exception(Invalid Syntax) # 当当前Token取值完毕 # 删除当前的Token取下一个Token的值 def eat(self, token_type): # 跳过与当前相同的Token取下一个Token if self.current_token.type token_type: self.current_token self.lexer.get_next_token() else: # 若在删除的过程中出错会引起整体的错误故抛错 self.error() # 工厂方法 def factor(self): token self.current_token # 判断当前要删除的Token类型 if token.type INTEGER: self.eat(INTEGER) return token.value # 将类型为Variable的变量返回 if token.type VARIABLE: self.eat(VARIABLE) return variables[token.value] # 左括号 elif token.type LPAREN: self.eat(LPAREN) result self.expr() self.eat(RPAREN) return result def term(self): result self.factor() while self.current_token.type in (MUL, DIV): token self.current_token if token.type MUL: self.eat(MUL) result result * self.factor() if token.type DIV: self.eat(DIV) result result / self.factor() return result def expr(self): result self.term() while self.current_token.type in (PLUS, MINUS): token self.current_token if token.type PLUS: self.eat(PLUS) result result self.term() if token.type MINUS: self.eat(MINUS) result result - self.term() return result def assignment(self): if self.current_token.type VARIABLE: var self.current_token.value self.eat(VARIABLE) if self.current_token.type EQUALITY: self.eat(EQUALITY) variables[var] self.expr() return vardef printResult(text): lexer Lexer(text) variableKey Interpreter(lexer).assignment() print(variableKey,,variables[variableKey])def main(): while True: try: text input(calc_ ) except EOFError: break if not text: continue # try: printResult(text) # except Exception: # print(Invalid Syntax)if __name__ __main__: main()转载于:https://www.cnblogs.com/RealKing/p/7780189.html
http://www.huolong8.cn/news/275861/

相关文章:

  • 教学方面网站建设wordpress文章编辑函数
  • 咸宁网站定制wordpress建设下载网站
  • 单页面淘宝客网站wordpress开启七牛
  • 电子政务 和网站建设总结wordpress菜单 链接
  • 挂别人公司做网站可以吗how to use wordpress ninja forms
  • 诚聘高新网站开发工程师重庆所有做网站的公司有哪些
  • 网站模板下载百度云链接怎么做的房管局在线咨询
  • 网络公司如何开网站年底 网站备案
  • eclipse 做网站亳州市建设局网站
  • 网站模板尺寸云安区学校网站建设统计表
  • 做国外网站 国外人能看到吗万网租空间 网站
  • 电子商务网站建设考试简答题惠州做网络推广的
  • 家电维修怎么自己做网站江苏最新消息今天
  • 做网上夫妻去哪个网站网站被黑是什么原因
  • 专业做国际网站wordpress api 自定义认证
  • 微信公众号售卖什么是优化型网站
  • 建一个网站容易吗舆情分析师是做什么的
  • 高端网站设计建站豪车网站建设背景
  • 建站工具华为做理财的网站好
  • 专业建站是什么百度快速seo优化
  • 怎么安装网站源码京润珍珠企业网站优化
  • 济南seo外贸网站建设全国劳务分包工程信息
  • 个人网站创建与管理迁西住房和建设管理局网站
  • 网站源码模板三维家3d设计软件免费
  • 上海建设工程质监站网站wordpress去掉标签前缀
  • 淄博网站制作服务推广域名空间都有了怎么做网站
  • 什么网站是最全的无锡百度快速优化排名
  • 做设计及免费素材网站有哪些网站服务器无响应是怎么回事
  • ih5做pc 网站vps的网站打不开
  • 360搜索建站公司牙科医院网站推广方案