;;;----- 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
;;;--------------------------------------------------------------------------
;;; 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 method 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
;;;--------------------------------------------------------------------------
;;; 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.
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 ()