【问题标题】:Is there a guide/convention to the markup being used in the lua official documentation?lua 官方文档中使用的标记是否有指南/约定?
【发布时间】:2019-11-01 11:00:32
【问题描述】:

我一直很难阅读与编码相关的官方文档。除非与示例配对,否则我通常无法理解。我正在寻求澄清阅读文档时有哪些约定(如果有的话)。以lua手册中的以下示例为例(https://www.lua.org/manual/5.1/manual.html#2.1) :

stat ::= if exp then block {elseif exp then block} [else block] end

第一个词 Stat 被定义为一个语句,“这个集合包括赋值、控制结构、函数调用和变量声明”。

::= 文档中没有定义,谢天谢地可以google。

Exp 已链接和解释。

块也有一个部分。

然后他们会执行 {} 和 []。他们在上面几行字面上说“方括号用于索引表格”。那个波浪形的括号是用来写表格的。那么我应该从中推断出什么? {} 和 [] 用于表示单独的部分作为标记,以便更容易查看某些组件?或者 {elseif exp then block} 是一个包含这些值的表,而 [else block] 是一个索引表的键值?如果我正在写一个确实如此的文档,我不会这样写吗?

然后我看到了

var ::= prefixexp `[´ exp `]´`

' ' 定义了一个字符串,但我必须假设使用 '[' ']' 来突出一个事实,因为他们在上一节中谈论方括号的作用,所以他们只是突出显示他们的位置,这不应该包含在代码中。我只知道做出这个假设,因为我知道当你把它们放在那里时它不起作用。

但后来我看到了:

chunk ::= {stat [`;´]}

同样,他们在列出代码之前讨论了分号的位置,但整个代码行也被新解释并被讨论。如果它用括号写,我为什么会假设它没有括号写?而且我看到他们再次使用 {} 和 [] ,我不知道他们在引用什么,因为它没有明确说明我们正在谈论一个表格......它只是使用代码本身来解释它是否在谈论是否使用 {} 的表格,但我们有第一组代码,其中使用了 {},它不是在谈论表格。

使用的约定是什么?通过在第一行代码中使用 {} 和 [],他们实际上试图做什么/展示什么?

【问题讨论】:

    标签: lua code-documentation


    【解决方案1】:

    正如at the beginning of the Lua documentationin the section on the Lua grammar 所述,Lua 以extended BNF 格式呈现其语法。

    EBNF 有自己的标点符号,有自己的含义,就像您发现的 ::=。但是作为语法,需要区分一段标点的EBNF含义和“这个标点出现在语法定义的语言中”。因此总是假定前一个含义;后者的意思只能通过引用标点来实现。

    所以这个:

    var ::= prefixexp `[´ exp `]´`
    

    表示prefixexp 后跟一个左括号,然后是exp,后跟一个右括号。

    相比之下,这个:

    funcname ::= Name {`.´ Name} [`:´ Name]
    

    表示Name 后跟. 的零个或多个子序列,后跟Name,后跟: 的可选子序列,后跟Name。因为这就是 {}[] 对 EBNF 的意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      相关资源
      最近更新 更多