网络管理与维护(2.4)ASH.1模块与宏定义

模块

在这里插入图片描述
就类似与写了个实现某周功能的类

基本格式在这里插入图片描述
<模块名>DEFINITIONS::=
BEGIN END

在这里插入图片描述
模块定义,EXPORTS ,输出给别的模块用,例如是多个类型只有这两个供外部使用
不写exports是都可以引用
写exports ;都不能引用
在这里插入图片描述
imports比输出多了个from,声明来自那个模块
在这里插入图片描述
RFC1155实例
在这里插入图片描述
在ASH.1编译器中可以使用AUTOMATIC TAGS来自动补上tag

宏定义

在这里插入图片描述
给原有类型加上了标签,就是一个新类型(标签类型)
Number的实质就是INTEGER在这里插入图片描述

而实际的BNF产生式,定义出来的标签类型还不是真正的全新类型
在这里插入图片描述
想要创造出新的类型,所以就引入了宏定义的概念
在这里插入图片描述
BNF产生式的格式就是类型符号与值符号。我宏定义就是新的类型符号与值符号,来创造新的类型在这里插入图片描述
打造类型的模板,即为宏定义
在这里插入图片描述
类似于模块的,不同关键字,begin,end,有了一个bnf才有的支持产生式
写出类型表示
值表示
支持产生式在这里插入图片描述
用已有类型代替宏定义的变量参数,就产生宏实例
在这里插入图片描述
在不使用宏定义的时候可以这样实现某种功能在这里插入图片描述
在这里插入图片描述
标准格式中这块类似于bnf的终结符,要加“”,同时TYPE-X是之前定义好的
在这里插入图片描述
这两个地方实际上就是宏定义的位置。挖出来的两个洞
在这里插入图片描述
这个就是宏实例的位置
在这里插入图片描述
这个就是一个宏实例
在这里插入图片描述
在这里插入图片描述
<>等效为已有ASN.1的编码规则
在这里插入图片描述
可以看到类型表示不光可以填类型,还可以填一段字符串
同时类型表示和值表示可以不相关
Revsion定义了一个新的支持产生式
在这里插入图片描述
由生成支持产生式+类型定义才能确定有多少个类型(洞的个数)在这里插入图片描述
这里ACCESS与STATUS是两个非终结符,由底下的两个支持产生式生成
在这里插入图片描述
在这里插入图片描述
之前可能会有疑问,为什么type不是非终结符可以已被替代,这个表后五个所表示的都不会被替代
在这里插入图片描述
由表可知,不能再type加type。所以这种写法是错的。。。(国际标准也有错的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值