Snobol4 语言 实战 HTML 视频路径解析实战

Snobol4阿木 发布于 7 天前 5 次阅读


Snobol4【1】 语言实战:HTML【2】 视频路径【3】解析实战

Snobol4 是一种古老的编程语言,最初于1962年由David J. Farber、Ralph E. Griswold 和 Ivan P. Polonsky 设计。它以其独特的文本处理【4】能力而闻名,特别适合于文本搜索和替换等任务。本文将探讨如何使用 Snobol4 语言来解析 HTML 中的视频路径,实现视频资源的提取。

Snobol4 简介

Snobol4 是 Snobol 系列语言的第四个版本,它继承了 Snobol3 的语法和功能,并增加了一些新的特性。Snobol4 的主要特点包括:

- 强大的文本处理能力
- 灵活的模式匹配【5】
- 高效的字符串操作【6】
- 简洁的语法结构

HTML 视频路径解析需求

在 Web 开发中,经常需要从 HTML 文档中提取视频路径。这些视频路径通常包含在 HTML 的 `` 标签的 `src` 属性中。以下是一个简单的 HTML 示例:

html

Your browser does not support the video tag.

我们的目标是使用 Snobol4 语言解析这个 HTML 文档,并提取出视频路径 `movie.mp4`。

Snobol4 代码实现

以下是一个使用 Snobol4 语言编写的示例代码,用于解析 HTML 文档并提取视频路径:

```snobol
:in
'html
'video
'src
'type
'mp4
'movie.mp4
'end
'extracted
'extracted = 0
'line
'pos
'pos = 0
'len
'len = 0
'found
'found = 0

DO
GET line
IF line = 'end' THEN
EXIT
END
pos = 0
len = LENGTH line
DO
IF pos >= len THEN
EXIT
END
found = 0
IF line[pos] = '' THEN
EXIT
END
pos = pos + 1
END
END
IF found THEN
IF line[pos] = 'v' THEN
pos = pos + 1
IF line[pos] = 'i' THEN
pos = pos + 1
IF line[pos] = 'd' THEN
pos = pos + 1
IF line[pos] = 'e' THEN
pos = pos + 1
IF line[pos] = 'o' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 2
END
END
END
END
END
END
END
IF found = 2 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 3
END
END
END
END
END
IF found = 3 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 4
END
END
END
END
END
IF found = 4 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 5
END
END
END
END
END
IF found = 5 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 6
END
END
END
END
END
IF found = 6 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 7
END
END
END
END
END
IF found = 7 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 8
END
END
END
END
END
IF found = 8 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 9
END
END
END
END
END
IF found = 9 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 10
END
END
END
END
END
IF found = 10 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 11
END
END
END
END
END
IF found = 11 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 12
END
END
END
END
END
IF found = 12 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 13
END
END
END
END
END
IF found = 13 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 14
END
END
END
END
END
IF found = 14 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 15
END
END
END
END
END
IF found = 15 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 16
END
END
END
END
END
IF found = 16 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 17
END
END
END
END
END
IF found = 17 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 18
END
END
END
END
END
IF found = 18 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 19
END
END
END
END
END
IF found = 19 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 20
END
END
END
END
END
IF found = 20 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 21
END
END
END
END
END
IF found = 21 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 22
END
END
END
END
END
IF found = 22 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 23
END
END
END
END
END
IF found = 23 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 24
END
END
END
END
END
IF found = 24 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 25
END
END
END
END
END
IF found = 25 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 26
END
END
END
END
END
IF found = 26 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 27
END
END
END
END
END
IF found = 27 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 28
END
END
END
END
END
IF found = 28 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 29
END
END
END
END
END
IF found = 29 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 30
END
END
END
END
END
IF found = 30 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 31
END
END
END
END
END
IF found = 31 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos] = 'c' THEN
pos = pos + 1
IF line[pos] = ' ' THEN
pos = pos + 1
found = 32
END
END
END
END
END
IF found = 32 THEN
pos = pos + 1
IF line[pos] = 's' THEN
pos = pos + 1
IF line[pos] = 'r' THEN
pos = pos + 1
IF line[pos