mapfile 指令可用于指定输出目标文件的很多方面。这些指令具有通用的语法,即为属性使用名称值对,并使用 {....} 构造表示分层结构和分组。
mapfile 指令的语法以下列通用形式为基础。
最简单的形式是一个不带值的指令名称。
directive;
第二种形式是带有一个值或由空格分隔的值列表的指令名称。
directive = value....;
除了所示的 "=" 赋值运算符外,还允许使用 "+=" 和 "-=" 形式的赋值。"=" 运算符将给定指令设置为给定值或值列表。"+=" 运算符用于将右侧值添加到当前值中,"-=" 运算符用于删除值。
更复杂的指令可以处理将多个属性放在花括号 {....} 中以便将其分组为一个单元的项目。
directive [name] { attribute [directive = value]; .... } [name];
左括号 ({) 前面可以有一个名称,用于命名给定语句的结果。类似地,在右括号 (}) 后面、终止分号 (;) 之前可以带有一个或多个可选名称。这些名称用于表示所定义的项目与其他命名项目具有某种关系。
请注意,分组中的属性的格式采用与前面所述的带有值的简单指令相同的语法,即带有一个赋值运算符 (=, +=, -=) 并后跟一个值,或是一个由空格分隔的值列表,并由分号 (;) 终止。
指令可以具有属性,后者又可以具有子属性。在这种情况下,子属性也分组在嵌套的花括号 {....} 中以反映此分层结构。
directive [name] { attribute { subattribute [= value]; .... }; } [name....];
mapfile 语法对于这种嵌套所允许的深度没有限制。嵌套深度只取决于指令的要求。