语法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 | ::= <一>的 | 返回指定的值出现的所有对象。 |