语法TQL EBNF-Notation
的托斯卡查询语言(TQL)正式的语言,这意味着必须使用一个搜索查询正式的语法所以,系统能够理解他们。
所谓的结构包括非终结符和终端。非终结符表达式,可以取代其他表达式(非终结符或终端)。
终端代表原子元素,不能取代其他表达式。正确的查询理解TQL必须由一系列的终端。能够创建一个有效的搜索表达式,所有非终结符都逐渐取代,这样最终所需的查询只包含终端。
EBNF符号使用能够描述TQL语法(见“EBNF-Notation”章)。
EBNF-Notation
在这方面是很有帮助的,非终结符TQL总是以小写字母开头。终端是特殊字符(例如:“]”,“)”“:”),或者从一个大写字母开始。
语法的TQL
语法包括所谓的作品。这些规则与非终结符可以取代其他非终结符和终端。查询必须由一个序列的终端。创建一个有效的查询,所有非终结符必须被终端所取代。
![]()  | 
               查询:= {arrowOperator [returnToken] searchExpression}  | 
              
上述生产由非终结符查询,arrowOperator,returnToken和searchExpression(注意:他们都开始用小写字母)。多亏了花括号arrowOperator returnToken searchExpression可以经常需要排队吗returnToken是可选的。
语法包括一笔自顶向下的产品处理。起点是开始符号组成的一个非终结符,这是取代,直到搜索查询终端组成的。
完成TQL-Grammar
Startsymbol:查询
查询  | 
               ::= {arrowOperator [returnToken] searchExpression}  | 
               |
searchExpression  | 
               ::= (assocName | |聚合specialAssocName | setOperation | subsetOperation | sortOperation | objectsSelector) [colonToken类型][leftSquareBracket logicalExpression rightSpareBracket]  | 
               |
logicalExpression  | 
               ::= (notToken logicalExpression) | leftParenthesis logicalExpression rightParenthesis | comparisionExpression {logicalOperator logicalExpression}  | 
               |
comparisonExpression  | 
               ::=表达式compOperator表达式  | 
               |
表达式  | 
               ::=项{addOperator项}  | 
               这学期可能stringLiteral所取代,intLiteral,一个属性或一个值  | 
              
术语  | 
               ::=因素{mulOperator因素}  | 
               |
因素  | 
               ::= leftParenthesis表达式rightParenthesis | functionStatement |值  | 
               |
functionStatement  | 
               ::= functionName leftParenthesis rightParenthesis表达式}{逗号表达式  | 
               |
价值  | 
               ::= stringLiteral | intLiteral |属性  | 
               |
属性  | 
               ::= {assocName pointToken}标识符  | 
               |
assocName  | 
               ::=标识符  | 
               assocName取而代之的是一个标识符  | 
              
类型  | 
               ::=标识符  | 
               通过输入您指定类型的对象应该在各自的搜索查询。  | 
              
::= doublequote doublequote文本  | 
               自由文本代表一个地方持有人可定义字符串。特殊字符需要使用一个反斜杠转义字符。可以转移一些特殊字符在文本中使用引号(“)作为分隔符的字符串。 | |
intLiteral  | 
               ::=(“+”|“-”)数字  | 
               |
uintLiteral  | 
               ::=数字  | 
               |
标识符  | 
               ::=(信|“_”){信|数字|“_”}|引用文本引用  | 
               |
聚合  | 
               ::= "团体" |“SUPERPART”|“自我”|“项目”  | 
               |
specialAssocName  | 
               ::= " AllReferences”|“OwningObject”  | 
               |
setOperation  | 
               ::= setFunction leftParenthesis rightParenthesis搜索搜索}{逗号)  | 
               |
setFunction  | 
               ::= "补" |“联盟”|“十字路口”  | 
               |
sortOperation  | 
               ::= sortFunction{逗号stringLiteral}] rightParenthesis leftParenthesis搜索  | 
               |
sortFunction  | 
               ::= "类"  | 
               |
objectsSelector  | 
               ::= "对象" leftParenthesis uniqueIdOrNodePath rightParenthesis{逗号uniqueIdOrNodePath})  | 
               |
uniqueIdOrNodePath  | 
               ::= uniqueIdString | nodePathString  | 
               |
uniqueIdString  | 
               ::= stringLiteral  | 
               |
nodePathString  | 
               ::= stringLiteral  | 
               |
subsetOperation  | 
               ::=“子集”leftParenthesis intLiteral[逗号uintLiteral]] rightParenthesis  | 
               |
arrowOperator  | 
               := " = > " | " - > "  | 
               |
compOperator  | 
               ::= " = = " | " !=" | "=i=" | "!i=" | ">" | "<" | ">=" | "<=" | "=?" | "=i?" | "!?" | "!i?" | // LIKE "=*" // LIKE (old version) "=~" | "=i~" // REGEX  | 
               compOperators是用来连接两个表达式和确定一个逻辑值(真、假)  | 
              
logicalOperator  | 
               ::= "和" | "或"  | 
               结合,分离  | 
              
addOperator  | 
               ::= " + " |“-”  | 
               |
mulOperator  | 
               ::= " * " | "  | 
               |
returnToken  | 
               ::= "返回"  | 
               |
notToken  | 
               ::= "不"  | 
               与notToken可以否定一个逻辑表达式  | 
              
pointToken  | 
               ::= "。"  | 
               |
colonToken  | 
               ::= ":"  | 
               |
leftSquareBracket  | 
               ::= " ("  | 
               代表一个左方括号  | 
              
rightSquareBracket  | 
               ::= ")"  | 
               代表一个右方括号  | 
              
leftParenthesis  | 
               ::= " ("  | 
               代表一个左括号  | 
              
rightParenthesis  | 
               ::= ")"  | 
               代表一个右括号  | 
              
逗号  | 
               ::= ","  | 
               |
配额  | 
               ::= " "  | 
               |
思想矛盾  | 
               ::= " "  | 
               |
| quantifierOperator | ::= <一>的  | 
               返回指定的值出现的所有对象。 | 
