Snobol4 语言 实战 XML 文档类型清洗实战

Snobol4阿木 发布于 10 天前 4 次阅读


Snobol4【1】 语言实战:XML【3】 文档类型清洗实战

Snobol4 是一种古老的编程语言【4】,最初于1962年由David J. Farber、Ralph E. Griswold 和 Ivan P. Polonsky 在贝尔实验室开发。它以其简洁的语法和强大的字符串处理【5】能力而闻名。尽管Snobol4在现代编程语言中并不常见,但它在处理文本和字符串方面仍然有其独特的优势。本文将探讨如何使用Snobol4语言进行XML文档类型的清洗实战。

Snobol4 简介

Snobol4 是一种高级编程语言,特别适合于文本处理【6】和字符串操作【7】。它的语法简洁,易于理解,同时提供了丰富的字符串处理函数。Snobol4 的程序通常由模式【8】(patterns)和动作【9】(actions)组成,其中模式用于匹配文本,动作则用于对匹配的文本进行操作。

XML 文档类型清洗

XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。在处理XML文档时,常常需要对文档进行清洗,以去除不必要的空白、注释或格式化错误。以下将使用Snobol4语言进行XML文档类型的清洗实战。

1. 环境准备

确保你的系统中安装了Snobol4编译器【10】。以下是在Unix-like系统【11】中安装Snobol4的示例命令:

sh
sudo apt-get install snobol4

2. 创建snobol【2】4程序

以下是一个简单的Snobol4程序,用于清洗XML文档中的空白和注释。

```snobol
:cleanxml【12】
input
(
' ' | '!' | '' | '%' | '&' | ''' | '(' | ')' | '' | '+' | ',' | '-' | '.' |
'/' | ':' | ';' | '' | '?' | '@' | '[' | '' | ']' | '^' | '_' |
'`' | '{' | '|' | '}' | '~' | '' | 't' | 'r' | 'f' | 'v'
)
|
(
' ' | '' | 't' | 'r' | 'f' | 'v'
)
=> output
(
' '
)
|
(
'!' | '' | '%' | '&' | ''' | '(' | ')' | '' | '+' | ',' | '-' | '.' |
'/' | ':' | ';' | '' | '?' | '@' | '[' | '' | ']' | '^' | '_' |
'`' | '{' | '|' | '}' | '~'
)
|
(
''
)
=> output
(
''
)
=> output
(
'>'
)
|
(
''
)
=> output
(
'>'
)
|
(
[a-zA-Z0-9] | '_' | '-'
)
=> output
(
[a-zA-Z0-9] | '_' | '-'
)
|
(
[^&'"trfv]
)
=> output
(
[^&'"trfv]
)
|
(
'&'
)
=> output
(
'&'
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'
)
=> output
(
';'
)
|
(
'&'
)
=> output
(
''
)
|
(
'&'