horvathm

PEG.js Part 1

Dec 18th, 2020
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Expressions
  2.   = head:Expression tail:(Nl Expression)* {
  3.       return tail.reduce(function(result, element) {
  4.         return result + element[1];
  5.       }, head);
  6.     }
  7.  
  8. Expression
  9.   = head:Factor tail:(_ ("+" / "*") _ Factor)* {
  10.       return tail.reduce(function(result, element) {
  11.         if (element[1] === "+") { return result + element[3]; }
  12.         if (element[1] === "*") { return result * element[3]; }
  13.       }, head);
  14.     }
  15.  
  16. Factor
  17.   = "(" _ expr:Expression _ ")" { return expr; }
  18.   / Integer
  19.  
  20. Integer "integer"
  21.   = _ [0-9]+ { return parseInt(text(), 10); }
  22.  
  23. _ "whitespace"
  24.   = [ \t]*
  25.  
  26. Nl "endline"
  27.   = [\n\r]*
Advertisement
Add Comment
Please, Sign In to add comment