#list #scope #parser #notation #configurable #language #string

rslnp

可配置的Scopes列表符号(SLN)解析器

2个不稳定版本

0.2.1 2021年5月25日
0.1.0 2021年5月17日

#1652文本处理

每月21次 下载

MIT/Apache

29KB
623

Rust Scopes列表符号解析器

这是一个用Rust编写的针对Scopes列表符号(SLN)的可配置解析器。

SLN是为了Scopes编程语言发明的,所以也可以看看它。

它被解析为标记列表,这是一个非常简单的表示形式。简而言之,每个值要么是一个符号,以字符串形式表示,要么是一个包含其他标记的列表。

表示

SLN是一种简单、适合代码和数据的表示形式。它是基于缩进的,类似于Python,并且直接映射列表表示,就像Lisp一样。它还支持使用括号代替基于缩进的表示,这在您希望在一行中写入一些内容时非常有用。但它也可以用来避免使用基于缩进的特性,并将其用作纯s表达式解析器,或者在这两者之间切换。

好处

这种表示形式有一些优点。它是一种相当简单且灵活的表示法,因此可以用于许多情况。它可以作为其他常见文本表示(如XML、JSON、TOML、YAML等)的替代品。多行字符串非常适合嵌入长文本(例如HTML中常见的文本),或其他语言的代码(例如着色语言的代码)。

除此之外,使用这种表示法还有更多好处。由于它被解析为标记列表,您可以将程序编写为与标记列表一起工作,然后访问为标记列表编写的所有解析器。或者您也可以编写自己的解析器。因此,在创建某些编程语言(可能是领域特定语言)时,您可以先使用这种表示法,当您有更好的表示法想法时,您可以只需切换解析器而无需更改逻辑。您甚至可以在代码中保留两个解析器,并允许两种语法,至少直到您重构现有代码。

它也是Scopes使用的表示形式,如果您想尝试Scopes,这可能是个好事。

用法

首先,您需要创建一个新的解析器。您还可以创建一个预配置的解析器,该解析器匹配作用域语法。如果还没有这样做,则是一个错误,应该得到修复。然后,您可以解析文件或字符串(任何可以转换为字符迭代器的对象)作为标记列表。字符串将被解析为包含两个符号的列表。第一个符号的名称为“symbol”,第二个包含字符串本身。

配置

目前您可以配置以下内容

  • 一个嵌套需要多少个空格的缩进?
  • 支持括号吗?使用哪些字符?
  • 包含单个符号的行将被解释为列表还是单个符号?
  • 支持注释吗?使用哪个字符来表示它们?
  • 字符串应该有前缀,并且应该有什么前缀?

也可以查看文档。

依赖项