This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
859 B
40 lines
859 B
/* |
|
* Simple Arithmetics Grammar |
|
* ========================== |
|
* |
|
* Accepts expressions like "2 * (3 + 4)" and computes their value. |
|
*/ |
|
|
|
Expression |
|
= head:Term tail:(_ ("+" / "-") _ Term)* { |
|
var result = head, i; |
|
|
|
for (i = 0; i < tail.length; i++) { |
|
if (tail[i][1] === "+") { result += tail[i][3]; } |
|
if (tail[i][1] === "-") { result -= tail[i][3]; } |
|
} |
|
|
|
return result; |
|
} |
|
|
|
Term |
|
= head:Factor tail:(_ ("*" / "/") _ Factor)* { |
|
var result = head, i; |
|
|
|
for (i = 0; i < tail.length; i++) { |
|
if (tail[i][1] === "*") { result *= tail[i][3]; } |
|
if (tail[i][1] === "/") { result /= tail[i][3]; } |
|
} |
|
|
|
return result; |
|
} |
|
|
|
Factor |
|
= "(" _ expr:Expression _ ")" { return expr; } |
|
/ Integer |
|
|
|
Integer "integer" |
|
= [0-9]+ { return parseInt(text(), 10); } |
|
|
|
_ "whitespace" |
|
= [ \t\n\r]*
|
|
|