From: Michael D. Lowis Date: Tue, 30 Jul 2019 21:09:05 +0000 (-0400) Subject: sketched out pratt parser X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=2d79201d14c4ea8f434ec88430edadd78becd8f4;p=proto%2Fsclpl-rb.git sketched out pratt parser --- diff --git a/compile.rb b/compile.rb index aa3186a..99ff7ef 100755 --- a/compile.rb +++ b/compile.rb @@ -159,6 +159,8 @@ class Parser primary: 10, } + RULES = {} + def initialize(path) @lex = Lexer.new(path) @prev = nil @@ -242,11 +244,26 @@ class Parser end end - def parseLevel(level) + def expression() + parseLevel(:assign) end - def expression() - constant() + def getRule(tok) + RULES[tok.type] + end + + def parseLevel(level) +# advance() +# prefixRule = getRule(@prev)[:prefix] +# if not prefixRule then +# error("expected an expression") +# end +# send(prefixRule) +# while (level <= LEVELS[getRule(@curr)[:level]]) +# advance() +# infixRule = getRule(@prev)[:infix] +# send(infixRule) +# end end def constant()