From 2d79201d14c4ea8f434ec88430edadd78becd8f4 Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Tue, 30 Jul 2019 17:09:05 -0400 Subject: [PATCH] sketched out pratt parser --- compile.rb | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) 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() -- 2.54.0