YAML – 语法基础
在本章中,您将学习有关YAML语法基础的以下方面:
* Production parameters
* 缩进空格
* 分离空间
* 忽略行前缀
* 行折叠
让我们详细了解每个方面。
Production参数
Production参数包括一组参数和允许使用特定production的值范围。以下是在YAML中使用的生产参数列表 –
缩进
它由字符n或m表示。字符流依赖于其中包含的块的缩进级别。许多production已经为这些功能参数化了它们。
上下文
它由c表示。YAML支持两组上下文:块样式和流样式。
样式
它由s表示。标量内容可以以五种样式之一呈现:明文,双引号和单引号流,文字和折叠块。
咀嚼
它由t表示。块标量提供许多机制,可帮助修剪块:strip,clip 和keep。咀嚼有助于格式化新行字符串。它用于块样式表示。使用指示符进行咀嚼处理。指示器控制应输出带有字符串换行符的内容。换行符使用(-)运算符移除,并使用(+)运算符添加。
下面显示了一个咀嚼过程的示例
strip:|-
text↓
clip:|
text↓
keep:|+
text↓
解析指定的YAML示例后输出如下 –
缩进空格
在YAML字符流中,缩进定义为零个或多个字符的换行符。要记住的最重要的一点是缩进不应包含任何制表符。缩进中的字符不应被视为节点内容信息的一部分。观察以下代码以更好地理解 –
%YAML 1.1
---
!!map {
?!!str“Not indented”
:!!map {
?!!str“By one space”
:!!str“By four\n spaces\n”,
?!!str“Flow style”
:!!seq [
!!str“By two”,
!!str“Still by two”,
!!str“Again by two”,
]
}
}
缩进后可见的输出如下 –
{
“Not indented”:{
“在一个空间下”:“在四个空间下”,
“流样式”:[
“通过两个”,
“仍旧是两个”,
“再次两个”,
]
}
}
分离空格
YAML使用空格字符分隔标记。最重要的注意事项是,YAML中的分离不应包含制表符。
以下代码行显示了分离空间的用法 –
{ · first: · Sammy, · last: · Sosa · }
上面显示的语法给出以下输出:
{
“\ u00b7 last”:“\ u00b7 Sosa \ u00b7”,
“\ u00b7 first”:“\ u00b7 Sammy”
}
忽略的行前缀
空前缀始终包括取决于标量类型的缩进,也包括前导空格。明文标量不应包含制表符。另一方面,引用标量可能包含制表符。块标量完全依赖于缩进。
以下示例以系统方式显示了忽略行前缀的工作 –
%YAML 1.1
---
!!map {
?!!str“plain”
:!!str“text lines”,
?!!str“引用”
:!!str“文本行”,
?!!str“block”
:!!str“text·®lines\n”
}
块流的输出结果如下 –
{
“PLAIN”:“文本行”,
“引用”:“文本行”,
“block”:“text \ u00b7 \ u00aelines \ n”
}
行折叠
使用行折叠允许更容易地折断长行。更多数量的短行意味着更好的可读性。通过注意长行的原始语义来实现行折叠。以下示例演示了行折叠 –
%YAML 1.1
--- !!str
“具体\L\
修剪\n\n\n\
作为空格”
您可以查看JSON格式的行折叠输出如下 –
“具体\u2028修剪\n\n\n作为空格”