Function: ebnf-alternative-dimension
ebnf-alternative-dimension is a byte-compiled function defined in
ebnf2ps.el.gz.
Signature
(ebnf-alternative-dimension ALTERNATIVE)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/ebnf2ps.el.gz
;; [alternative width-fun dim-fun entry height width list]
(defun ebnf-alternative-dimension (alternative)
(ebnf-log "(ebnf-alternative-dimension alternative)")
(let ((body (ebnf-node-list alternative))
(lis (ebnf-node-list alternative)))
(while lis
(ebnf-node-dimension-func (car lis))
(setq lis (cdr lis)))
(let ((height 0.0)
(width 0.0)
(alt body)
(tail (car (last body)))
(entry (ebnf-node-entry (car body)))
node)
(while alt
(setq node (car alt)
alt (cdr alt)
height (+ (ebnf-node-height node) height)
width (max (ebnf-node-width node) width)))
(ebnf-adjust-width body width)
(setq height (+ height (* (1- (length body)) ebnf-vertical-space)))
(ebnf-node-entry alternative (+ entry
(ebnf-entry
(- height entry
(- (ebnf-node-height tail)
(ebnf-node-entry tail))))))
(ebnf-node-height alternative height)
(ebnf-node-width alternative (+ width
ebnf-horizontal-space
ebnf-basic-width-extra))
(ebnf-node-list alternative body)))
(ebnf-log " alternative entry : %7.3f" (ebnf-node-entry alternative))
(ebnf-log " alternative height : %7.3f" (ebnf-node-height alternative))
(ebnf-log " alternative width : %7.3f" (ebnf-node-width alternative)))