您的位置:首页 > 理论基础 > 数据结构算法

DJL语言标准--第二章:命令

2008-03-30 20:20 288 查看
 (上接“ DJL语言标准--第一章:节点--(3)  ”)
(此篇为DJL语言标准摘录4)


第二章:命令
         命令用于辅助解析DJL文件。合理地使用命令可以使DJL文件更简单、易读。
         命令的作用域是在书写位置后的同级或子级(包括孙级、孙级的子级等)起作用,对书写位置前的同级或子级(包括孙级、孙级的子级等),以及父级(包括祖父级、祖父级的父级等)无作用。
命令的格式
基本书写格式:

代码示例2.001{
>[命令名()]
>[命令名(参数)]
>[命令名(参数1,参数2)]
}

如有更多的参数,以此类推。
命令是固定的,您不能新增或删除命令。
DJL命令一共有如下几个命令:source命令(用于引入文件外部的DJL内容)、id命令(用于标识文件,方便其他DJL文件引用)、ignoreId命令(取消文件标识)、resetId(清除所有自设的文件标识)、mode命令(用于设置模式简称)、ignoreMode命令(取消某个模式简称)、resetMode命令(清除所有设置的模式简称)。
source命令
节点名称>[source("路径")]
使用此命令,可以表示该节点的内容或数据的来源是位于路径的DJL文件。
例如有两个DJL文件:
一个位于任意位置,内容如下:

代码示例2.002a{
西方的幸运数字>[source("E:/data/b.djl")]
西方的厄运数字=13
中国的幸运数字=8
中国的厄运数字=4
}

一个文件名为 b.djl ,位于E:/data/文件夹,以下是该文件的内容:

代码示例2.002b{
西方的幸运数字=7
}

那么读取代码示例2.002a中的“西方的幸运数字”时,就会牵连到位于E:/data/sourceExample_children.djl 的外部文件了。“西方的幸运数字”节点名称后使用了>[source("路径")]结构。这就意味着“西方的幸运数字”的内容将由位于路径的DJL文件中的同名节点的内容代替。
 
当然,除了内容节点可以使用此方法外,结构节点也依然适用。
 
您也可以在路径中使用相对路径。例如代码示例2.002a若位于E:/data/文件夹内,那么"E:/data/b.djl" 路径部分(绝对路径写法)就可以由"b.djl" (相对路径写法)代替。

 
有可能您的DJL文件的数据结构很复杂,可能会引用多个外部文件。如果在一个DJL文件中引用另一个文件时,能够相对某个主文件来描述引用的文件的位置会,也许更加方便。
所以source命令还有如下结构,用以满足上述要求:
 
节点名称>[source("[/b]路径",文件标识)]
 
 文件标识的位置是某个文件的代号,路径中则填写相对于该文件的位置。(您可以为任意文件设置文件标识,有关文件标识的设置将会马上介绍)
 
例如,某个位于E:/data/文件夹内的DJL文件的文件标识为“root”,那么代码示例2.002c所表示的内容,与代码示例2.002a的内容时相同的。

代码示例2.002c{
西方的幸运数字>[source("b.djl",root)]
西方的厄运数字=13
中国的幸运数字=8
中国的厄运数字=4
}

由于相对路径是相对于“root”的,因此,“西方的幸运数字”的内容的来源只与“root”代表的文件的位置相关,与代码示例2.002c在什么位置无关。
id命令
那么,如何设置文件标识呢?
只要在需要标识为该文件标识的DJL文件中,加入
 
>[id(文件标识)]
 
即可。此命令可以放在任何位置,但方便起见,建议放在文件的开头部分。
 
此文件标识将会在书写位置之后起作用;书写位置之后所加载的外部文件中,也可以使用此文件标识。
并不是所有字符都可以当作文件标识,有关文件标识符的限制、要求,请参见[章节][3]文件标识的规则]。
ignoreId命令
您还可以取消该文件的文件标识。
 
>[ignoreId(文件标识)]
 
使用上述命令即可在书写位置之后使该文件标识失效。
resetId命令
>[resetId()]
 
在该命令的书写位置之后,所有设置的文件标识都将失效。
mode命令
>[mode(模式,"模式简称")]
 
此命令将会在书写位置之后起作用,包括加载的外部文件。作用是使用设置的模式简称来代替冗长的模式,简化DJL文件书写。
    此命令可以放在任何位置,放在文件的开头部分最佳。
         DJL支持您为节点内容设置不同的模式,即标示出节点内容的类型。
目前DJL内置了两种模式,“normal”和“dynamic”,“normal”模式表明其内容为字符串,“dynamic”模式表明其内容为文本表达式(StrExp)。您也可以为内容设置自己的模式,如text/htmltext/xml等。
默认情况下,DJL文件都会默认将模式为“#”的节点当作是“dynamic”模式的,而以不填写模式的节点当作是“normal”模式的。就好像在每个DJL文件中默认添加了>[mode(normal,"")]>[mode(dynamic,"#")]DJL文两个命令一样。

代码示例2.003{
normal 节点a=1+1;
节点b=1+1;
 
dynamic 节点c=1+1;
# 节点d=1+1;
}

在代码示例2.003中,“节点a”与“节点b”内容的类型是相同的,都是字符串。“节点c”与“节点d”内容的类型是相同的,都是文本表达式(StrExp)。
照猫画虎,您就可以为自己的模式设置简称了:

代码示例2.004{
>[mode(text/xml,"xml")]
>[mode(value/dollar,"$")]
 
text/xml 节点a=<root><node></node></root>;
xml 节点b=<root><node></node></root>;
 
value/dollar 节点c=24.5;
$ 节点d=24.5;
}

在代码示例2.004中,“节点a”与“节点b”内容的类型是相同的,都是xml文本。“节点c”与“节点d”内容的类型是相同的,都是以美元为单位表示价值。
         同样注意,模式简称也不是任意的。模式简称的规则与模式的名称规则相同,参见[章节][3][模式的名称规则]。
ignoreMode命令
>[ignoreMode("模式简称")]
 
使用上述命令即可在书写位置之后使该模式失效。
特别地,若进行如下的命令,>[ignoreMode("")],则不填写模式的节点将会作为“normal”模式的节点,即等效于>[mode(normal,"")]
resetMode命令
>[resetMode()]
 
忽略以前所有对模式的自行设定,而恢复默认值。使用命令之后,恢复的默认情况是:以“#”作为“dynamic”的模式简称,以不填写模式作为“normal”模式的简称。

(第二章 命令 完,下接DJL语言标准摘录5,“ DJL语言标准--第三章:名称规则”)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  语言 数据结构 xml c