Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
DeathKing opened this issue Jan 15, 2019 · 2 comments
Open

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

DeathKing opened this issue Jan 15, 2019 · 2 comments
Labels

Comments

@DeathKing
Copy link
Contributor

这三个术语很大程度上是相关联的,因此我放在一个 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> 这样的形式;
  • 暂时使用“程序体”的说法,如果有更好的说法,稍后会修改。
@guenchi
Copy link
Owner

guenchi commented Jan 17, 2019

syntax语法译比较好 这里更着重约定俗成 而不是本来的含义
body程序体是译很贴切的 比其他几个待选项都好 我支持

@guenchi guenchi added the term label Jan 17, 2019
@ghost
Copy link

ghost commented Jan 17, 2019

👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants