首页 > 解决方案 > 配置文件应该在注释行之前允许空格吗?

问题描述

我正在尝试根据这篇 Eric S. Raymond 文章(称它们为“运行控制”文件)实现一种简单的配置文件格式。

除了这个例外,这里是运行控制语法的正常样式规则。从历史上看,它们的模式是基于 Unix shell 的语法:

支持解释性注释,并用# 引导它们。语法还应该忽略 # 之前的空格,以便支持与配置指令在同一行的注释。

不要做出阴险的空白区分。也就是说,处理空格和制表符的运行,在语法上与单个空格相同。如果您的指令格式是面向行的,那么最好忽略行上的尾随空格和制表符。元规则是文件的解释不应该依赖于人眼看不到的区别。

将多个空行和注释行视为一个空行。如果输入格式使用空行作为记录之间的分隔符,您可能希望确保注释行不会结束记录。

在词法上将文件视为由空格分隔的标记或标记行的简单序列。复杂的词汇规则难以学习,难以记忆,人类也难以解析。避开他们。

但是,支持带有嵌入空格的标记的字符串语法。使用单引号或双引号作为平衡分隔符。如果两者都支持,请注意不要像在 shell 中那样赋予它们不同的语义;这是一个众所周知的混乱来源。

支持用于在字符串中嵌入不可打印和特殊字符的反斜杠语法。标准模式是 C 编译器支持的反斜杠转义语法。因此,例如,如果字符串 "a\tb" 没有被解释为字符 'a',后跟一个制表符,然后是字符 'b',这将是非常令人惊讶的。

所以在阅读之后,似乎以下是允许的

groovy 2.4.1
groovy 2.4.1 # inline comment
# a comment line


# the lines before are blank lines

但是像这样的东西呢

    # a comment line preceeded by some whitespace
    groovy 2.4.1 # the line starting with leading spaces

我也应该支持这样的事情吗?

标签: bash

解决方案


推荐阅读