website online/try: serve different example
parent
fd3dbb77ac
commit
9dc4d4a5ef
@ -0,0 +1,30 @@
|
||||
// Simple Arithmetics Grammar
|
||||
// ==========================
|
||||
//
|
||||
// Accepts expressions like "2 * (3 + 4)" and computes their value.
|
||||
|
||||
Expression
|
||||
= head:Term tail:(_ ("+" / "-") _ Term)* {
|
||||
return tail.reduce(function(result, element) {
|
||||
if (element[1] === "+") { return result + element[3]; }
|
||||
if (element[1] === "-") { return result - element[3]; }
|
||||
}, head);
|
||||
}
|
||||
|
||||
Term
|
||||
= head:Factor tail:(_ ("*" / "/") _ Factor)* {
|
||||
return tail.reduce(function(result, element) {
|
||||
if (element[1] === "*") { return result * element[3]; }
|
||||
if (element[1] === "/") { return result / element[3]; }
|
||||
}, head);
|
||||
}
|
||||
|
||||
Factor
|
||||
= "(" _ expr:Expression _ ")" { return expr; }
|
||||
/ Integer
|
||||
|
||||
Integer "integer"
|
||||
= _ [0-9]+ { return parseInt(text(), 10); }
|
||||
|
||||
_ "whitespace"
|
||||
= [ \t\n\r]*
|
Loading…
Reference in New Issue