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

徐州建设工程审图中心网站com网站怎么注册

徐州建设工程审图中心网站,com网站怎么注册,珠海网站建设培训,河北建造师网1、模式标准 模式名称#xff1a;解析器模式 模式分类#xff1a;行为型 模式意图#xff1a;给定一个语言#xff0c;定义它的文法的一种表示#xff0c;并定义一个解释器#xff0c;这个解释器使用该表示来解释语言中的句子。 结构图#xff1a; 适用于#xff1…1、模式标准 模式名称解析器模式 模式分类行为型 模式意图给定一个语言定义它的文法的一种表示并定义一个解释器这个解释器使用该表示来解释语言中的句子。 结构图 适用于 当有一个语言需要解释执行,并且可将该语言中的句子表示为一个抽象语法树时以下情况效果最好: 1、该文法简单。对于复杂的发文文法的类层次变得庞大而无法管理。此时语法分析程序生成器这样的工具是更好的选择。它们无须构建抽象语法树即可解释表达式这样可以节省空间还可能节省时间。 2、效率不是一个关键问题。最高效的解释器通常不是通过直接解释语法分析树实现的,而是首先将它们转换成另一种形式。不过即使在这种情况下转换器仍然可用该模式实现。  2、分析与设计 这里假设我们希望以文本的方式记录游戏命令过程比如[[UnitItem]]{{attack}}[[UnitItem]] 类似这种[[单位]]{{命令}}为格式然后通过解析器解析成实际的命令 意图给定一个语言命令备忘录语言定义它的文法的一种表示[[单位]]{{命令}}并定义一个解释器这个解释器使用该表示来解释语言中的句子。 3、开始打造 表达式接口  export interface IExpression {interpret(context: UnitCommandUnitContext): void; }单位表达式及解析方法 export class UnitItemExpression implements IExpression {private unitItemId: string;constructor(unitItemId: string) {this.unitItemId unitItemId;}interpret(context: UnitCommandUnitContext): void {// 执行与终结符相关的解释操作let unitItem context.getUnitItem(this.unitItemId)console.log(解析到单位项:, unitItem);context.setUnitItem(unitItem)} } “命令”表达式及解析方法 export class CommandExpression implements IExpression {private commandId: string;constructor(commandId: string) {this.commandId commandId;}interpret(context: UnitCommandUnitContext): void {// 执行与终结符相关的解释操作let command context.getCommand(this.commandId)console.log(解析到命令:, command);context.setCommand(command);} } “遍历解析”表达式及解析方法 export class CommandSequenceExpression implements IExpression {private expressions: IExpression[];constructor(expressions: IExpression[]) {this.expressions expressions;}interpret(context: UnitCommandUnitContext): void {for (const expression of this.expressions) {expression.interpret(context);}context.executeCommand()} } 单位 操作命令 另一个单位 的context // 单位 操作命令 另一个单位 的context export class UnitCommandUnitContext {command: ICommand nullfromUnitItem: UnitItemany nulltoUnitItem: UnitItemany nullgetUnitItem(unitItemId: string) {return xhgame.game.battleEntity.model.unitItemMap.get(unitItemId)}getCommand(commandId: string) {// todo 其他补充return new AttackCommand(null, null)}setCommand(command: ICommand) {this.command command}setUnitItem(unitItem: UnitItemany) {if (this.fromUnitItem null) {this.fromUnitItem unitItem}if (this.toUnitItem null) {this.toUnitItem unitItem}}executeCommand() {if (this.command instanceof AttackCommand) {this.command.setUnitItem(this.fromUnitItem)this.command.setTargetUnitItem(this.toUnitItem)this.command.execute()}} } 4、开始使用 // 创建一个 单位 操作命令 另一个单位的上下文 const unitCommandUnitContext new UnitCommandUnitContext(); // 解析文本为 UnitItem.20 的单位对 UnitItem.21 的单位发动攻击 // 目前为了后期拓展下列以[[单位]]{{命令}}为格式 const commandText [[UnitItem.20]]{{attack}}[[UnitItem.21]]; // 构建抽象语法树 const expressions: IExpression[] []; const regex /\[\[([^\]])\]\]|\{\{([^\}])\}\}|\[\{([^\}])\}\]|\[([^\])\]/g; let match; while ((match regex.exec(commandText)) ! null) {console.log(match)const token match[0];const unitItemId match[1]; // 捕获组1中的内容为单位项IDconst commandId match[2]; // 捕获组2中的内容为命令IDif (unitItemId ! undefined) {expressions.push(new UnitItemExpression(unitItemId));} else if (commandId ! undefined) {expressions.push(new CommandExpression(commandId));} } console.log(expressions, expressions) // “遍历解析”表达式 const commandSequence new CommandSequenceExpression(expressions); commandSequence.interpret(unitCommandUnitContext);
http://www.pierceye.com/news/155170/

相关文章:

  • 360网站安全检测自己买个服务器做网站
  • 临汾市网站建设网站版式分类
  • 广东的一起(17)做网站东莞建工集团企业网站
  • 最佳外贸英文网站模板六安网站设计公司
  • 为啥网站打开速度慢备案域名怎么弄
  • 门户网站建设主要内容深圳网站有哪些
  • 最好看的免费网站源码龙泉驿最新消息
  • 百度建立网站需要花多少钱学校门户网站建设工作
  • 网站安全防护方案沈阳网站建设策划方案
  • php做网站需要啥技术网站每年空间域名费用及维护费
  • 商城网站建设报个人免费网站
  • 公司网站开发建设wordpress首页加图片
  • 个人网站怎么写建设工程网站广州
  • 东阿网站制作如何在国外网站做推广
  • 宣城公司做网站潍坊市住房和城乡建设局网站
  • 用自己服务器做网站用备案wordpress弹窗订阅
  • 配色相关网站省住房城乡建设厅网站
  • 做汽车配件出口用什么网站好些求百度关键词搜索网站
  • 做网站到八方资源网怎么样公司网站首页如何做
  • 东莞政务网站建设方案wordpress三栏博客主题
  • 艺友网站建设网站需要的栏目
  • 教育类网站 前置审批重庆网站建设首选卓光
  • 宁波做网站哪家好个人做论坛网站怎么做
  • 公司网站建设北京电子设计工程期刊
  • 网站前端建设都需要什么c 网站开发案例详解
  • 无锡网站无忧网站建设
  • 最火高端网站设计厂家宁波新亚建设内部网站
  • 娱乐网站建设宁波网站建设多少钱一年
  • app制作器手机版下载网站关键词优化排名怎么做
  • 网站站外优化推广方式网站建设网站需要什么软件有哪些