X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/blobdiff_plain/aa14a4cddcb96b681d5c19a2ec8bad382f43b264..a469422e9be4244c098a309e78aa3b761cf0a5ec:/src/parser/parser-expr-proto.lisp diff --git a/src/parser/parser-expr-proto.lisp b/src/parser/parser-expr-proto.lisp index 7fc2609..9052e54 100644 --- a/src/parser/parser-expr-proto.lisp +++ b/src/parser/parser-expr-proto.lisp @@ -7,7 +7,7 @@ ;;;----- Licensing notice --------------------------------------------------- ;;; -;;; This file is part of the Sensble Object Design, an object system for C. +;;; This file is part of the Sensible Object Design, an object system for C. ;;; ;;; SOD is free software; you can redistribute it and/or modify ;;; it under the terms of the GNU General Public License as published by @@ -28,29 +28,6 @@ (cl:in-package #:sod-parser) ;;;-------------------------------------------------------------------------- ;;; Basic protocol. -(export 'push-operator) -(defgeneric push-operator (operator state) - (:documentation - "Push an OPERATOR onto the STATE's operator stack. - - This should apply existing stacked operators as necessary to obey the - language's precedence rules.")) - -(export 'push-value) -(defgeneric push-value (value state) - (:documentation - "Push VALUE onto the STATE's value stack. - - The default message just does that without any fuss. It's unlikely that - this will need changing unless you invent some really weird values.")) - -(export 'apply-operator) -(defgeneric apply-operator (operator state) - (:documentation - "Apply the OPERATOR to argument on the STATE's value stack. - - This should pop any necessary arguments, and push the result.")) - (export 'operator-push-action) (defgeneric operator-push-action (left right) (:documentation @@ -101,7 +78,8 @@ (defparse expr ((&key (nestedp (gensym "NESTEDP-"))) ;;;-------------------------------------------------------------------------- ;;; Numerical precedence. -(export '(operator-left-precedence operator-right-precedence)) +(export '(operator-left-precedence operator-right-precedence + operator-associativity)) (defgeneric operator-left-precedence (operator) (:documentation "Return the OPERATOR's left-precedence. @@ -148,13 +126,11 @@ (defclass prefix-operator () Prefix operators are special because they are pushed at a time when the existing topmost operator on the stack may not have its operand available. It is therefore incorrect to attempt to apply any existing - operators without careful checking. This class provides a method on - `push-operator' which immediately pushes the new operator without - inspecting the existing stack.")) + operators without careful checking.")) (export 'simple-operator) (defclass simple-operator () - ((function :initarg :function :reader operator-function) + ((%function :initarg :function :reader operator-function) (name :initarg :name :initform "" :reader operator-name)) (:documentation