Coverage report: /home/ellis/comp/core/lib/parse/pratt.lisp
Kind | Covered | All | % |
expression | 0 | 21 | 0.0 |
branch | 0 | 2 | 0.0 |
Key
Not instrumented
Conditionalized out
Executed
Not executed
Both branches taken
One branch taken
Neither branch taken
1
;;; pratt.lisp --- Simple Pratt Top Down Operator Precedence Parser
3
;; ref: https://tdop.github.io
6
(in-package :parse/pratt)
8
(defclass pratt-parser () ())
10
(defgeneric next-precedence (self))
12
(defgeneric parse-prefix (self))
14
(defgeneric parse-infix (self left precedence))
16
(defmethod parse ((self pratt-parser) &optional (precedence 0))
17
(let ((expr (parse-prefix self)))
18
(loop while (< precedence (next-precedence self))
19
do (setf expr (parse-infix self expr (next-precedence self))))