Pasukon generates parsers using an easy to learn grammar. It's based on parser combinators, and also implements a lexing step.
It is highly extensible (you can make your own lexer and combinators), has no external dependencies, and works in both Node.js and Browser.
Try it #
lex
match NUMBER /[0-9]+(?:\.[0-9]+)?/
match PLUS '+'
match MINUS '-'
match TIMES '*'
match DIV '/'
match POPEN '('
match PCLOSE ')'
ignore WHITESPACE /^\s+/
/lex
addition
| (substraction as :lhs) then :PLUS then (substraction as :rhs)
|> 'return $.lhs + $.rhs'
| substraction
;
substraction
| (multiplication as :lhs) then :MINUS then (multiplication as :rhs)
|> 'return $.lhs - $.rhs'
| multiplication
;
multiplication
| (division as :lhs) then :TIMES then (division as :rhs)
|> 'return $.lhs * $.rhs'
| division
;
division
| (expression as :lhs) then :DIV then (expression as :rhs)
|> 'return $.lhs / $.rhs'
| expression
;
expression
| :POPEN then (addition as :expr) then :PCLOSE
|> 'return $.expr'
| number
;
number
| :NUMBER 'return +$1'
;
start
| addition
;Input
Documentation #
You can find the full documentation at the GitHub repo.
from Hacker News https://pasukon.rocks/
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.