语法-1.3:通用抽象语法和嵌入式语言实用程序

安全哈斯克尔

语言。句法。构造。装饰

目录

说明

用附加信息装饰表达式的构造

剧情简介

装饰

数据 装饰信息-表达式-信号哪里来源

用附加信息装饰符号

的一个用法装饰是修饰语法树的每个节点。完成了只需更改

AST dom信号

AST(Decor info dom)信号

建造师

装饰::info(拒绝结果sig)->表达sig->装饰信息-表达式-信号 

领域

装饰信息::info(拒绝结果信号)
 
decoExpr(装饰Expr)::expr信号
 

实例

项目sub-sup=>项目子(装饰信息支持) 
平等表达式=>平等(装饰信息表达式) 
(伦德尔(装饰信息表达式),ToTree(ToTree)expr)=>ToTree(ToTree)(装饰信息表达式) 
伦德尔表达式=>伦德尔(装饰信息表达式) 
评估表达式=>评估(装饰信息表达式) 
受约束的表达式=>受约束的(装饰信息表达式) 
评估绑定dom=>评估绑定(装饰信息域) 
AlphaEq(阿尔法公式)子域env=>AlphaEq(阿尔法公式)(装饰信息子)(装饰info sub)dom环境 

获取信息::AST公司(装饰信息dom)sig->info(拒绝结果信号)来源

获取顶级节点的装饰

更新装饰时间:对于所有人info dom a(信息a->信息a)->ASTF公司(装饰信息域)a->ASTF公司(装饰信息dom)来源

更新顶级节点的装饰

提升式装饰::(表达式->信息(拒绝结果s) ->b)->装饰信息表达式s->b来源

将对包含相关信息的表达式进行操作的函数提升到操作装饰表达。这个功能很方便一起使用例如。查询节点简单当域具有以下形式时(装饰信息域).

集合信息:: (对于所有人信号。信息sig->b)->AST公司(装饰信息域)sig->[b]来源

收集所有节点的装饰品

到TreeDescor::对于所有人信息dom a(伦德尔信息,ToTree(ToTree)dom)=>ASTF公司(装饰信息域)a-> 字符串来源

装饰语法树的渲染

showDecor公司:: (伦德尔信息,ToTree(ToTree)dom)=>ASTF公司(装饰信息域)a->字符串来源

使用ASCII艺术显示修饰语法树

抽屉装饰:: (渲染信息,ToTree(ToTree)dom)=>ASTF公司(装饰信息域)a->IO(输入输出)()来源

使用ASCII艺术打印经过修饰的语法树