aboutsummaryrefslogtreecommitdiff
path: root/Auxiliary/Grammars/kranc2.peg
blob: 15c183ca0e0472e7cf4e393de8dea0de7cd720f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
skipper = ([ \t\n\r]+|#.*)*
end = ([ \t]+|#.*)*\r*\n
name = [A-Za-z][A-Za-z0-9]*
uname = [A-Za-z][A-Za-z0-9_]*
indices = ([_^]([a-zA-Z]'*)+)*
tensor = {name}{indices}
dtensor = D{indices} {tensor}
number = -?[0-9]+(\.[0-9]*|)([eEdD][+-]?[0-9]+|)
func = {name} \( ({expr}( , {expr})*|) \)
value = {func}|{dtensor}|{tensor}|{number}|\( {expr} \)
pow = {value}( \*\* {value}|)
mulop = [*/%]
mul = {pow}( {mulop} {pow})*
addop = [+-]
expr = {mul}( {addop} {mul})*
eqn = ({dtensor}|{tensor}) \= {expr}{-end}
eqns = {eqn}( {eqn})*
thorn = begin[ ]+thorn {name}{-end}( {calculation}| {variables}| {temporaries})* end[ ]+thorn
calculation = begin[ \t]+calculation[ \t]+{uname}{-end} {eqns} end[ \t]+calculation
variables = begin[ \t]+variables{-end} {name}( end[ \t]+variables\b{brk}| {name})*{-end}
temporaries = begin[ \t]+temporaries{-end} {name}( end[ \t]+temporaries\b{brk}| {name})*{-end}