]> git.mdlowis.com Git - proto/sclpl-rb.git/commitdiff
sketched out pratt parser
authorMichael D. Lowis <mike.lowis@gentex.com>
Tue, 30 Jul 2019 21:09:05 +0000 (17:09 -0400)
committerMichael D. Lowis <mike.lowis@gentex.com>
Tue, 30 Jul 2019 21:09:05 +0000 (17:09 -0400)
compile.rb

index aa3186a2e2a7bca253f82ca3ebf62855cd0f99a6..99ff7ef6caef294210160a9b3b9ca466dbc6e248 100755 (executable)
@@ -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()