语法TQL EBNF-Notation

托斯卡查询语言(TQL)正式的语言,这意味着必须使用一个搜索查询正式的语法所以,系统能够理解他们。

所谓的结构包括非终结符终端。非终结符表达式,可以取代其他表达式(非终结符或终端)。

终端代表原子元素,不能取代其他表达式。正确的查询理解TQL必须由一系列的终端。能够创建一个有效的搜索表达式,所有非终结符都逐渐取代,这样最终所需的查询只包含终端。

EBNF符号使用能够描述TQL语法(见“EBNF-Notation”章)。

EBNF-Notation

EBNF符号

|

逻辑或
例子:

| b = a或b

[…]

方括号代表一个选项。

表达式可以使用n次:n = 0, 1

(…)

括号用于分组表达式。
内容必须完全使用一次。

例子:

(| b) c=一个cbc

相比

| b c=一个bc

{…}

花括号表示迭代

表达式可以使用n次:n = 0, 1, 2, 3,…

例子:

一个{b}=一个一个b一个bb…

“……”

标志必须采取一个文本词词(终端)。

例子:

“部分”

在这方面是很有帮助的,非终结符TQL总是以小写字母开头。终端是特殊字符(例如:“]”,“)”“:”),或者从一个大写字母开始。

语法的TQL

语法包括所谓的作品。这些规则与非终结符可以取代其他非终结符和终端。查询必须由一个序列的终端。创建一个有效的查询,所有非终结符必须被终端所取代。

查询:= {arrowOperator [returnToken] searchExpression}

上述生产由非终结符查询,arrowOperator,returnTokensearchExpression(注意:他们都开始用小写字母)。多亏了花括号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取而代之的是一个标识符

类型

::=标识符

通过输入您指定类型的对象应该在各自的搜索查询。

stringLiteral

::= 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

::= <一>的

返回指定的值出现的所有对象。