使用形式语言定义通信报文格式
2013-11-22 10:32
369 查看
本文由 @lonelyrains 出品,转载请注明出处。
文章链接: http://blog.csdn.net/lonelyrains/article/details/9465773
在通信过程中,有几种常用的通信报文定义格式。有if-else直接层层递进融合代码的方式,有自然语言描述的方式定义一条条规则,但是很少发现有用形式语言定义的。
其实,形式语言定义的报文,由于是规范,可以比较方便地让计算机识别,从而自动转换成代码。它和直接if-else定义报文相比,省去了很多手工敲打条件判断的过程,体现的是高效和高质量。现在手头缺少这个识别形式语言并转化为格式检测代码的自动机实现。但是这东西迟早会有人做出来的。
比如有自然语言定义的通信报文格式为:
1、报文以^|^开始,以^|^结尾,报文每个字段都以^|^为分割符
2、报文有需要在表格中显示的部分和不需要显示的部分,需要显示的部分采用_show={{key1:value1},{key2:value2}}类似形式;不需要显示的只要不用_show关键字即可,例如hidekey1=hidevalue1
3、不使用中文编码字符':' 即ascii码0xA3BA,以免与':'混淆。分隔符^|^左右无多余空格和其他制表符
4、解析到多个_show字段,报错
以不全面的自然语言定义转化为严密的形式语言,将自然语言描述不全面的地方补全:
A=“^|^”
B="="
C=":"
D=所有可打印字符
E=(D*)-A-B-C-"_show"
F=A((EBEA)*)
G="_show={"(("{"(ECE)"}",)*)"{"ECE"}}"
H=FGF
说明:*表示任意个(包括0个)重复单元
文章链接: http://blog.csdn.net/lonelyrains/article/details/9465773
在通信过程中,有几种常用的通信报文定义格式。有if-else直接层层递进融合代码的方式,有自然语言描述的方式定义一条条规则,但是很少发现有用形式语言定义的。
其实,形式语言定义的报文,由于是规范,可以比较方便地让计算机识别,从而自动转换成代码。它和直接if-else定义报文相比,省去了很多手工敲打条件判断的过程,体现的是高效和高质量。现在手头缺少这个识别形式语言并转化为格式检测代码的自动机实现。但是这东西迟早会有人做出来的。
比如有自然语言定义的通信报文格式为:
1、报文以^|^开始,以^|^结尾,报文每个字段都以^|^为分割符
2、报文有需要在表格中显示的部分和不需要显示的部分,需要显示的部分采用_show={{key1:value1},{key2:value2}}类似形式;不需要显示的只要不用_show关键字即可,例如hidekey1=hidevalue1
3、不使用中文编码字符':' 即ascii码0xA3BA,以免与':'混淆。分隔符^|^左右无多余空格和其他制表符
4、解析到多个_show字段,报错
以不全面的自然语言定义转化为严密的形式语言,将自然语言描述不全面的地方补全:
A=“^|^”
B="="
C=":"
D=所有可打印字符
E=(D*)-A-B-C-"_show"
F=A((EBEA)*)
G="_show={"(("{"(ECE)"}",)*)"{"ECE"}}"
H=FGF
说明:*表示任意个(包括0个)重复单元
相关文章推荐
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)
- Json.Net 使用属性定义日期的序列化格式
- Java语言基础{Java_se(02)}-字面量和常量-变量的基本定义和使用-Java表达式-数据类型和分类-基本数据类型的转换-算数运算符-赋值运算符-比较运算符-三元运算符-逻辑运算符
- 使用Web标准建站第3天:定义语言编码
- Swift3.0语言教程使用占位符格式创建和初始化字符串
- Spring表达式语言 之 5.4在Bean定义中使用EL(拾伍)
- 统一接受返回报文定义 已经enum的使用
- C++STL开发温习与总结(六): 6.C++语言输入/输出流定义之输入/输出格式控制
- 使用Web标准建站第3天:定义语言编码
- 【第五章】Spring表达式语言 之 5.4在Bean定义中使用EL—跟我学spring3
- 【第五章】Spring表达式语言 之 5.4在Bean定义中使用EL—跟我学spring3
- iOS:App 内部更改使用语言/ 重定义系统的宏
- Go 语言常量定义与<<(左移)、>>(右移)和ioto的使用
- 使用IFormattable接口为自定 4000 义类定义格式字符串
- java语言基础(7)——数据类型、变量的定义和使用
- R语言中时间格式个人使用总结
- [java学习笔记]java语言基础概述之函数的定义和使用&函数传值问题
- 函数声明定义使用的书写格式
- 【第五章】Spring表达式语言 之 5.4在Bean定义中使用EL—跟我学spring3
- 通信中使用的数据格式(xml,json,pb.msgpack)