Skip to content

术语讨论:syntax、form、body #22

Description

@DeathKing

这三个术语很大程度上是相关联的,因此我放在一个 issue 里面讨论了。

syntax

syntax 一词,目前的术语表中给出的译法是“句法”,这是一个正确的译法,但不是一个合适的译法。syntax 一词,在程序设计语言领域译作“语法”由来已久,可以说是一种俗成约定了。比如,parser 就是依照一定的规则(产生式),划分出句子间的不同组分以及他们的相互关系,从这个角度上来说,parser 就是 syntax 范畴的东西,而 parser 却通常译作语法解析器,而非 句法解析器。我认为在这个层面上,我们应该遵循传统。

syntax 一词,在 Chez Scheme 手册中,经常也以下面的方式出现:

  • syntax: (fluid-let-syntax ((keyword expr) ...) form1 form2 ...)
  • returns: see explanation
  • libraries: (chezscheme)

这时候,译为“句法“有一种很“突兀”的感觉。

form

在 R6RS 报告中,它有两个出处:

  1. Procedure calls can generally be distinguished from these special forms by looking for a syntactic keyword in the first position of an form: if the first position does not contain a syntactic keyword, the expression is a procedure call. (1.7 Procedure calls and syntactic keywords)
  2. Syntactic data in Scheme source code are called forms.(Chap 4.Lexical syntax and datum syntax)

可以看出① form 是一个更广义的概念;② 跟过程调用对位的是**特殊形式(special form)**这种说法。因此,术语表中提到的 句法/语法形式 或者 特殊形式 的译法,我认为都是恰当的;但在相关文献中,特殊形式出现得更多一点。

See also:派生形式

body

这个词儿的具体译名,我拿得不是很准:

  • 首先不应该是“语句体”,因为 Scheme 中没有**语句(statement)**这个说法;
  • 其次也不是“过程体”,因为这里是待展开的形式;
  • 这里没有使用 <body> 这个语法记号,因此也不适宜保留 <body> 这样的形式;
  • 暂时使用“程序体”的说法,如果有更好的说法,稍后会修改。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions