-
Notifications
You must be signed in to change notification settings - Fork 0
/
spec_bnf.txt
30 lines (25 loc) · 1.08 KB
/
spec_bnf.txt
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
<spec> ::= <stmt> | <spec> <stmt>
<stmt> ::= <selectorDecl> | <directive>
<directive> ::= '!' <directiveType> | '!' <directiveType> '(' <directiveParams> ')'
<directiveType> ::= 'import'
<selectorDecl> ::= <selectorName> '=' <selectorDef> | <selectorDef>
<selectorDef> ::= <selectorType> '(' <params> ')' | <selectorType> '(' ')'
<selectorRef> ::= '%' <selectorName> | '%%'
<selectorType> ::= <identifier>
<params> ::= <param> | <params> ',' <param>
<param> ::= <string> | <int> | <float> | <bool> | <selectorRef> | <selectorDef>
<selectorName> ::= <identifier>
<identifier> ::= <letter> | <letter> <idRest>
<idRest> ::= <idChar> | <idChar> <idRest>
<idChar> ::= '_' | <letter> | <digit>
<letter> ::= [a-z] | [A-Z]
<char> ::= any character
<string> ::= '"' <char>+ '"'
<bool> ::= 'true' | 'false'
<digit> ::= [0-9]
<int> ::= '-' <digit>+ | <digit>+
<float> ::= <neg_float> | <pos_float>
<neg_float> ::= '-' <pos_float>
<pos_float> ::= <digit>* '.' <digit>+
MPI Example:
mpi=onCallPathTo(by_name(\"MPI_.*\", %%)) exclude=join(byPath(\"excludethis\", %%), inlineSpecified(%%)) subtract(%mpi, %exclude)