GB18030字符分析源代码
字符分析之派生类
四字节字符判别器类定义
import sys
sys.path.append("D:\cncc\project\字符分析")
from 全局共享 import 共享消息
from 全局共享 import 共享行列号
from 全局共享 import 字符四元队列
from 全局共享 import 输入文件
from 字符解析通用框架抽象类定义 import 字符解析通用框架抽象类
class 四字节字符判别器类(字符解析通用框架抽象类):
def __init__(self):
self.设启动码(16)
self.第一字节首字节 = 0x81
self.第一字节尾字节 = 0xFE
self.第二字节首字节 = 0x30
self.第二字节尾字节 = 0x39
self.第三字节首字节 = 0x81
self.第三字节尾字节 = 0xFE
self.第四字节首字节 = 0x30
self.第四字节尾字节 = 0x39
self.a = False
self.b = False
self.c = False
self.d = False
def 工作函数(self):
if 字符四元队列.已有字节数() == 4:
第一字节值 = 字符四元队列.读元素值(0)
第二字节值 = 字符四元队列.读元素值(1)
第三字节值 = 字符四元队列.读元素值(2)
第四字节值 = 字符四元队列.读元素值(3)
if 第一字节值 >= self.第一字节首字节 and 第一字节值 <= self.第一字节尾字节:
self.a = True
else:
self.a = False
if 第二字节值 >= self.第二字节首字节 and 第二字节值 <= self.第二字节尾字节:
self.b = True
else:
self.b = False
if 第三字节值 >= self.第三字节首字节 and 第三字节值 <= self.第三字节尾字节:
self.c = True
else:
self.c = False
if 第四字节值 >= self.第四字节首字节 and 第四字节值 <= self.第四字节尾字节:
self.d = True
else:
self.d = False
if self.a and self.b and self.c and self.d :
共享消息.设定消息值(128)
else:
共享消息.设定消息值(32)
else :
共享消息.设定消息值(32)
四字节字符处理器类定义
import sys
sys.path.append("D:\cncc\project\字符分析")
from 全局共享 import 共享消息
from 全局共享 import 共享行列号
from 全局共享 import 字符四元队列
from 全局共享 import 输入文件
from 全局共享 import 字符元素链表
from 全局共享 import 垃圾元素链表
from 字符元素类定义 import 字符元素类
from 字符解析通用框架抽象类定义 import 字符解析通用框架抽象类
class 四字节字符处理器类(字符解析通用框架抽象类):
def __init__(self):
self.设启动码(128)
def 工作函数(self):
字节1 = 字符四元队列.读元素值(0)
字节2 = 字符四元队列.读元素值(1)
字节3 = 字符四元队列.读元素值(2)
字节4 = 字符四元队列.读元素值(3)
字符四元队列.弹出四个元素()
字符元素 = 字符元素类(共享行列号)
字符元素.追加4字节(字节1,字节2,字节3,字节4)
字符元素链表.append(字符元素)
共享消息.设定消息值(2048)
二字节字符判别器类定义
import sys
sys.path.append("D:\cncc\project\字符分析")
from 全局共享 import 共享消息
from 全局共享 import 共享行列号
from 全局共享 import 字符四元队列
from 全局共享 import 输入文件
from 字符解析通用框架抽象类定义 import 字符解析通用框架抽象类
class 二字节字符判别器类(字符解析通用框架抽象类):
def __init__(self):
self.设启动码(32)
self.第一字节首字节 = 0x81
self.第一字节尾字节 = 0xFE
self.第二字节A首字节 = 0x40
self.第二字节A尾字节 = 0x7E
self.第二字节B首字节 = 0x80
self.第二字节B尾字节 = 0xFE
self.a = False
self.b = False
self.c = False
def 工作函数(self):
if 字符四元队列.已有字节数() >= 2:
第一字节值 = 字符四元队列.读元素值(0)
第二字节值 = 字符四元队列.读元素值(1)
if 第一字节值 >= self.第一字节首字节 and 第一字节值 <= self.第一字节尾字节:
self.a = True
else:
self.a = False
if 第二字节值 >= self.第二字节A首字节 and 第二字节值 <= self.第二字节A尾字节:
self.b = True
else:
self.b = False
if 第二字节值 >= self.第二字节B首字节 and 第二字节值 <= self.第二字节B尾字节:
self.c = True
else:
self.c = False
if self.a and ( self.b or self.c ) :
共享消息.设定消息值(256)
else:
共享消息.设定消息值(64)
else :
共享消息.设定消息值(64)
二字节字符处理器类定义
import sys
sys.path.append("D:\cncc\project\字符分析")
from 全局共享 import 共享消息
from 全局共享 import 共享行列号
from 全局共享 import 字符四元队列
from 全局共享 import 输入文件
from 全局共享 import 字符元素链表
from 全局共享 import 垃圾元素链表
from 字符元素类定义 import 字符元素类
from 字符解析通用框架抽象类定义 import 字符解析通用框架抽象类
class 二字节字符处理器类(字符解析通用框架抽象类):
def __init__(self):
self.设启动码(256)
def 工作函数(self):
字节1 = 字符四元队列.读元素值(0)
字节2 = 字符四元队列.读元素值(1)
字符四元队列.弹出二个元素()
字符元素 = 字符元素类(共享行列号)
字符元素.追加2字节(字节1,字节2)
字符元素链表.append(字符元素)
共享消息.设定消息值(2048)
一字节字符判别器类定义
import sys
sys.path.append("D:\cncc\project\字符分析")
from 全局共享 import 共享消息
from 全局共享 import 共享行列号
from 全局共享 import 字符四元队列
from 全局共享 import 输入文件
from 字符解析通用框架抽象类定义 import 字符解析通用框架抽象类
class 一字节字符判别器类(字符解析通用框架抽象类):
def __init__(self):
self.设启动码(64)
self.第一字节首字节 = 0x00
self.第一字节尾字节 = 0x7F
self.a = False
self.b = False
self.c = False
def 工作函数(self):
if 字符四元队列.已有字节数() >= 1:
第一字节值 = 字符四元队列.读元素值(0)
if 第一字节值 >= self.第一字节首字节 and 第一字节值 <= self.第一字节尾字节:
self.a = True
else:
self.a = False
if self.a :
共享消息.设定消息值(512)
else:
共享消息.设定消息值(1024)
else :
共享消息.设定消息值(1024)
一字节字符处理器类定义
import sys
sys.path.append("D:\cncc\project\字符分析")
from 全局共享 import 共享消息
from 全局共享 import 共享行列号
from 全局共享 import 字符四元队列
from 全局共享 import 输入文件
from 全局共享 import 字符元素链表
from 全局共享 import 垃圾元素链表
from 字符元素类定义 import 字符元素类
from 字符解析通用框架抽象类定义 import 字符解析通用框架抽象类
class 一字节字符处理器类(字符解析通用框架抽象类):
def __init__(self):
self.设启动码(512)
def 工作函数(self):
字节1 = 字符四元队列.读元素值(0)
字符四元队列.弹出一个元素()
字符元素 = 字符元素类(共享行列号)
字符元素.追加1字节(字节1)
字符元素链表.append(字符元素)
共享消息.设定消息值(768)
字符分析函数
字符分析函数源代码
import sys
sys.path.append("D:\cncc\project\字符分析")
from 全局共享 import 共享消息
from 全局共享 import 共享行列号
from 全局共享 import 字符四元队列
from 全局共享 import 输入文件
from 全局共享 import 字符元素链表
from 全局共享 import 垃圾元素链表
from 队列预存器类定义 import 队列预存器类
from 四字节字符判别器类定义 import 四字节字符判别器类
from 二字节字符判别器类定义 import 二字节字符判别器类
from 一字节字符判别器类定义 import 一字节字符判别器类
from 四字节字符处理器类定义 import 四字节字符处理器类
from 二字节字符处理器类定义 import 二字节字符处理器类
from 一字节字符处理器类定义 import 一字节字符处理器类
from 垃圾字节字符处理器类定义 import 垃圾字节字符处理器类
from 换行判别器类定义 import 换行判别器类
from 循环条件判别器类定义 import 循环条件判别器类
def GB18030字符分析函数(输入文件名):
队列预存器 = 队列预存器类()
四字节字符判别器 = 四字节字符判别器类()
二字节字符判别器 = 二字节字符判别器类()
一字节字符判别器 = 一字节字符判别器类()
四字节字符处理器 = 四字节字符处理器类()
二字节字符处理器 = 二字节字符处理器类()
一字节字符处理器 = 一字节字符处理器类()
垃圾字节字符处理器 = 垃圾字节字符处理器类()
换行判别器 = 换行判别器类()
循环条件判别器 = 循环条件判别器类()
输入文件.打开文件(输入文件名)
字符元素链表.clear()
垃圾元素链表.clear()
字符四元队列.清空队列()
共享行列号.__init__()
共享消息.设定消息值(8)
while 共享消息.读取消息值() != 0 :
队列预存器.行动()
四字节字符判别器.行动()
二字节字符判别器.行动()
一字节字符判别器.行动()
四字节字符处理器.行动()
二字节字符处理器.行动()
一字节字符处理器.行动()
垃圾字节字符处理器.行动()
换行判别器.行动()
循环条件判别器.行动()
输入文件.关闭文件()
print("有效字符数:",len(字符元素链表))
print("无效字符数:",len(垃圾元素链表))
s = len(字符元素链表)
for i in range(s):
c = 字符元素链表[i]
r = c.私有行列号.读取行号值()
l = c.私有行列号.读取列号值()
g = c.元素值
print(r,"行",l,"列",",字符元素值 ",g,",字符 ",c.显示字符())
print("示例文件1,字符分析如下:")
GB18030字符分析函数("示例文件1.txt")
示例文件1
整数型:主函数()
{
屏幕显示(“星辰大海”);
}
字符分析函数运行结果
示例文件1,字符分析如下:
有效字符数: 33
无效字符数: 0
1 行 1 列 ,字符元素值 [213, 251] ,字符 整
1 行 2 列 ,字符元素值 [202, 253] ,字符 数
1 行 3 列 ,字符元素值 [208, 205] ,字符 型
1 行 4 列 ,字符元素值 [163, 186] ,字符 :
1 行 5 列 ,字符元素值 [214, 247] ,字符 主
1 行 6 列 ,字符元素值 [186, 175] ,字符 函
1 行 7 列 ,字符元素值 [202, 253] ,字符 数
1 行 8 列 ,字符元素值 [163, 168] ,字符 (
1 行 9 列 ,字符元素值 [163, 169] ,字符 )
1 行 10 列 ,字符元素值 [13] ,字符
1 行 11 列 ,字符元素值 [10] ,字符
2 行 1 列 ,字符元素值 [123] ,字符 {
2 行 2 列 ,字符元素值 [13] ,字符
2 行 3 列 ,字符元素值 [10] ,字符
3 行 1 列 ,字符元素值 [9] ,字符
3 行 2 列 ,字符元素值 [198, 193] ,字符 屏
3 行 3 列 ,字符元素值 [196, 187] ,字符 幕
3 行 4 列 ,字符元素值 [207, 212] ,字符 显
3 行 5 列 ,字符元素值 [202, 190] ,字符 示
3 行 6 列 ,字符元素值 [163, 168] ,字符 (
3 行 7 列 ,字符元素值 [161, 176] ,字符 “
3 行 8 列 ,字符元素值 [208, 199] ,字符 星
3 行 9 列 ,字符元素值 [179, 189] ,字符 辰
3 行 10 列 ,字符元素值 [180, 243] ,字符 大
3 行 11 列 ,字符元素值 [186, 163] ,字符 海
3 行 12 列 ,字符元素值 [161, 177] ,字符 ”
3 行 13 列 ,字符元素值 [163, 169] ,字符 )
3 行 14 列 ,字符元素值 [163, 187] ,字符 ;
3 行 15 列 ,字符元素值 [13] ,字符
3 行 16 列 ,字符元素值 [10] ,字符
4 行 1 列 ,字符元素值 [125] ,字符 }
4 行 2 列 ,字符元素值 [13] ,字符
4 行 3 列 ,字符元素值 [10] ,字符