horvathm

PEG.js Part 2

Dec 18th, 2020
87
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:Term tail:(_ ("*") _ Term)* {
  10.       return tail.reduce(function(result, element) {
  11.         if (element[1] === "*") { return result * element[3]; }
  12.       }, head);
  13.     }
  14.  
  15. Term
  16.     = head:Factor tail:(_ ("+") _ Factor)* {
  17.         return tail.reduce(function(result, element) {
  18.           if (element[1] === "+") { return result + element[3]; }
  19.         }, head);
  20.       }
  21.  
  22. Factor
  23.   = "(" _ expr:Expression _ ")" { return expr; }
  24.   / Integer
  25.  
  26. Integer "integer"
  27.   = _ [0-9]+ { return parseInt(text(), 10); }
  28.  
  29. _ "whitespace"
  30.   = [ \t]*
  31.  
  32. Nl "endline"
  33.   = [\n\r]*
Advertisement
Add Comment
Please, Sign In to add comment