summaryrefslogtreecommitdiff
path: root/doc/querylanguage.ebnf
blob: 75df0e3f9ebd51dca53041b5f6b874a7e7cd2bb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
query		=	tablename '?' statement .

statement 	= 	'(' + statement + ')' 
		| 	booleanstatement 
		|	logicalstatement .

booleanstatement = 	statement '&' statement 
		| 	statement '|' statement 
		| 	'!' statement .

logicalstatement =	logicalstatement ('<'|'>'|'<='|'=>'|'=='|'!='|'~')
                        logicalstatement .
		|	value .
		|	variable .

value		=	floatnumber | decimalnumber | hexnumber |
                        octalnumber | string .

variable	=	 identifier .

tablename	=	 identifier .

identifier = UnicodeLetter { UnicodeLetter | UnicodeDigit } .

floatnumber = decimals "." [ decimals ] [ exponent ] |
              decimals exponent |
              "." decimals [ exponent ] |
              [ "+" | "-" ] "nan" | [ "+" | "-" ] "inf" .
decimals  = decimal_digit { decimal_digit } .
exponent  = ( "e" | "E" ) [ "+" | "-" ] decimals .

decimalnumber = ( "1" ... "9" ) { decimal_digit }  | "0" .
hexnumber     = 0" ( "x" | "X" ) hex_digit { hex_digit }.
octalnumber   = "0" octal_digit { octal_digit } .
decimal_digit = "0" ... "9" .
hex_digit     = "0" ... "9" | "A" ... "F" | "a" ... "f" .
octal_digit   = "0" ... "7" .

string = '"' { normalchar | escapedchar } '"'.
normalchar  = Char - '"' - "\" .
escapedchar = "\" Char .

# Char, UnicodeLetter and UnicodeDigit are assumed to be predefined.
# Example: materials ? (30 <= shearmodulus <= 50)