Coverage report: /home/ellis/comp/core/lib/parse/pratt.lisp

KindCoveredAll%
expression021 0.0
branch02 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
2
 
3
 ;; ref: https://tdop.github.io
4
 
5
 ;;; Code:
6
 (in-package :parse/pratt)
7
 
8
 (defclass pratt-parser () ())
9
 
10
 (defgeneric next-precedence (self))
11
 
12
 (defgeneric parse-prefix (self))
13
 
14
 (defgeneric parse-infix (self left precedence))
15
 
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))))
20
     expr))