Function: hif-factor
hif-factor is a byte-compiled function defined in hideif.el.gz.
Signature
(hif-factor)
Documentation
Parse a factor.
factor : ! factor | ~ factor | ( exprlist ) | defined( id ) |
id ( parmlist ) | strings | id.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/hideif.el.gz
(defun hif-factor ()
"Parse a factor.
factor : `!' factor | `~' factor | `(' exprlist `)' | `defined(' id `)' |
id `(' parmlist `)' | strings | id."
(cond
((eq hif-token 'hif-not)
(hif-nexttoken)
(list 'hif-not (hif-factor)))
((eq hif-token 'hif-lognot)
(hif-nexttoken)
(list 'hif-lognot (hif-factor)))
((eq hif-token 'hif-lparen)
(hif-nexttoken)
(let ((result (hif-exprlist)))
(if (not (eq hif-token 'hif-rparen))
(error "Bad token in parenthesized expression: %s" hif-token)
(hif-nexttoken)
result)))
((eq hif-token 'hif-defined)
(hif-nexttoken)
(let ((paren (when (eq hif-token 'hif-lparen) (hif-nexttoken) t))
(ident hif-token))
(if (memq hif-token '(or and not hif-defined hif-lparen hif-rparen))
(error "Error: unexpected token: %s" hif-token))
(when paren
(hif-nexttoken)
(unless (eq hif-token 'hif-rparen)
(error "Error: expected \")\" after identifier")))
(hif-nexttoken)
`(hif-defined (quote ,ident))))
((stringp hif-token)
(if (get-text-property 0 'hif-value hif-token)
;; new hideif internal number format for string concatenation
(prog1 hif-token (hif-nexttoken))
(hif-string-concatenation)))
((numberp hif-token)
(prog1 hif-token (hif-nexttoken)))
;; Unary plus/minus.
((memq hif-token '(hif-minus hif-plus))
(list (prog1 hif-token (hif-nexttoken)) 0 (hif-factor)))
(t ; identifier
(let ((ident hif-token))
(hif-nexttoken)
(if (eq hif-token 'hif-lparen)
(hif-place-macro-invocation ident)
`(hif-lookup (quote ,ident)))))))