[ << 教程 ] | [Top][Contents][Index] | [ Common notation >> ] |
[ < 所有的都放在一起 ] | [ Up : 如何写输入文件 ] | [ 处理报错 > ] |
2.2.2 处理输入文件
LilyPond 输入文件和很多编程语言的源文件非常类似。他们都包含版本声明,都是区分大小写的,都会自动忽略掉空格。表达式用大括号 { }
组织,注释用 %
或 %{ … %}
表示。
如果你不理解前面所说的,也没有关系!下面就会一一解释他们的意思:
- 版本声明:
每一个 LilyPond 文件都会带有一个版本声明。版本声明是一行
\version "2.25.22"
依惯例,版本声明会放在 LilyPond 文件的最开头。
版本声明非常重要,原因有二。一是它能够使得 LilyPond 语法更新自动应用在输入文件上。二是它指明了编译这份文件所需的 LilyPond 版本。
如果输入文件中忘记标版本声明了,LilyPond 会在编译文件时给出警告。
- 大小写敏感:
小写 (e.g.
a, b, s, t
) 和大写 (e.g.A, B, S, T
) 的效果是不一样的。音符都是用小写字母表示的:‘{ c d e }’ 是有效的输入; ‘{ C D E }’ 会报错。 - 空格不敏感:
多少个空格(或制表符或换行)都不重要(不起作用)。下面这三个都是一样的效果:‘{ c4 d e }’,
‘{ c4 d e }’ 和:
{ c4 d e }
当然,最后一个写法很不易读。所以最好在一个代码块中加入两个空格(或一个制表符)的缩进:
{ c4 d e }
然而,空格是需要用来分隔不同语法元素的。换句话说,空格总可以多加,但不一定能省略。因为缺失必要的空格分隔会导致出现奇怪的错误,所以强烈建议在每一个语法元素前后都加上空格,和前后语法元素隔开;比如每个大括号前后都加上空格。
- 表达式:
每条 LilyPond 输入都需要用
{ 大括号 } 括起来。这些大括号告诉 LilyPond 括号里的输入是一个单独的音乐表达式,就像数学中的小括号
()
一样。 这些括号两侧都需要加入空格以避免歧义,除非是在行首或行末。一个 LilyPond 指令后面跟的大括号内的简单表达式(如 ‘
\relative { … }
’)也会被视为单一音乐表达式。 -
Comments:
注释是为了让人们读懂音乐输入而写的标记;注释会在语法分析中被忽略掉,所以不会对输出结果产生影响。注释有两种类型:百分号
%
是单行注释;该行在%
后的内容都会被编译器忽略。依惯例,单行注释都加在要说明的代码之上。a4 a a a % this comment refers to the Bs b2 b
注释块标记表明一大段音乐输入都是注释。所有在
%{
和%}
之间的内容都会被忽略。然而,注释块不能‘嵌套’。这意味着你不能把注释块放在另一个注释块内。如果你这样尝试的话,第一个%}
会终止 这两个注释块。下面是展示可能用到注释块情形:% notes for twinkle twinkle follow c4 c g' g a a g2 %{ This line, and the notes below are ignored, since they are in a block comment. f4 f e e d d c2 %}
[ << 教程 ] | [Top][Contents][Index] | [ Common notation >> ] |
[ < 所有的都放在一起 ] | [ Up : 如何写输入文件 ] | [ 处理报错 > ] |