Mercurial > core / lisp/lib/parse/pratt.lisp
changeset 698: |
96958d3eb5b0 |
parent: |
686748796f08
|
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Fri, 04 Oct 2024 22:04:59 -0400 |
permissions: |
-rw-r--r-- |
description: |
fixes |
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 (defgeneric parse (self &optional precedence) 17 (:method ((self pratt-parser) &optional (precedence 0)) 18 (let ((expr (parse-prefix self))) 19 (loop while (< precedence (next-precedence self)) 20 do (setf expr (parse-infix self expr (next-precedence self))))