changelog shortlog graph tags branches changeset files revisions annotate raw help

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
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 (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))))
21  expr)))