14 个稳定版本 (3 个主要版本)
3.0.0 | 2023 年 4 月 22 日 |
---|---|
2.0.3 | 2023 年 3 月 9 日 |
2.0.1 | 2023 年 2 月 1 日 |
1.4.0 | 2023 年 1 月 16 日 |
0.1.0 | 2023 年 1 月 13 日 |
4 在 #text-node
每月 71 次下载
17KB
355 行
NXML
NXML 是一种标记语言,它不是 XML。它基于 XML,但走了非常不同的方向,现在与 XML 完全不同。
语法解释
- 节点可以是文本(
hello
)或序列([I|am|a|sequence]
) - 括号(
[
和]
)包围序列 - 节点可以一个接一个地出现,无需任何显式的分隔符(
text[sequence][sequence]text
) - 竖线(
|
)表示文本节点的结束(否则文本节点在输入结束时或序列边界(括号)处结束)。这可以用来连续放置文本节点或创建一个空文本节点 - 每个特殊字符(
|
、[
、]
或\
)都可以用反斜杠(\
)转义
语法语法(伪 Backus-Naur 形式;可能无效)
special_character ::= "[" | "]" | "|" | "\\"
text_character ::= !special_character | "\\\\" | "\\[" | "\\]" | "\\|"
text ::= text text_character | text_character | text "|" | "|"
sequence_of_nodes ::= sequence_of_nodes node | node
node ::= text | "[" + sequence_of_nodes + "]" | "[]"
语法示例
[to-do list|
[buy some groceries|[
lettuce |
cucumber |
ketchup
]]
[finish NXML|[
add syntax explanation to the README |
update syntax examples |
rewrite the parser
]]
[do the homework]
]
[user|
[id|123]
[name|Paul]
[surname|Brown]
[profession|Architect]
[friend ids|[234|345|456]]
]
[
[message|
[from|Alice]
[to|Bob]
[contents|Hello!]
]
[message|
[from|Bob]
[to|Alice]
[contents|Hi!]
]
]
[ARTICLE|
[TITLE|Cookies are good]
[CONTENTS|
[PARAGRAPH|
[OUTER REFERENCE|[URL|https://en.wikipedia.org/wiki/Cookie][TEXT|Cookies]] are good!
]
]
]
you can use the sequential parser to parse bare sequential nodes |
something |
something
an empty text node! -> || <- here it is!
another one, this time inside a sequence: [|] (it is between the opening bracket and the vertical bar)
使用此库时应考虑的事项
- 此库不会修剪文本节点末尾或开头的空白,以提供更好的灵活性。修剪过多的空白是用户的责任。
依赖关系
~280–730KB
~17K SLoC