comparison lisp/psgml/psgml-parse.el @ 12:bcdc7deadc19 r19-15b7

Import from CVS: tag r19-15b7
author cvs
date Mon, 13 Aug 2007 08:48:16 +0200
parents ac2d302a0011
children 9ee227acff29
comparison
equal deleted inserted replaced
11:91ffe8bd52e4 12:bcdc7deadc19
1 ;;;; psgml-parse.el --- Parser for SGML-editing mode with parsing support 1 ;;;; psgml-parse.el --- Parser for SGML-editing mode with parsing support
2 ;; $Id: psgml-parse.el,v 1.1.1.2 1996/12/18 03:47:15 steve Exp $ 2 ;; $Id: psgml-parse.el,v 1.2 1997/01/04 21:20:07 steve Exp $
3 3
4 ;; Copyright (C) 1994, 1995 Lennart Staflin 4 ;; Copyright (C) 1994, 1995 Lennart Staflin
5 5
6 ;; Author: Lennart Staflin <lenst@lysator.liu.se> 6 ;; Author: Lennart Staflin <lenst@lysator.liu.se>
7 ;; Acknowledgment: 7 ;; Acknowledgment:
444 (` (cdr (, n)))) 444 (` (cdr (, n))))
445 445
446 446
447 ;;; Using states 447 ;;; Using states
448 448
449 (defsubst sgml-final (state)
450 (if (sgml-normal-state-p state)
451 (sgml-state-final-p state)
452 (sgml-final-and state)))
453
454 (defun sgml-final-and (state)
455 (and (sgml-final (sgml-and-state-substate state))
456 (loop for s in (sgml-and-state-dfas state)
457 always (sgml-state-final-p s))
458 (sgml-state-final-p (sgml-and-state-next state))))
459
449 ;; get-move: State x Token --> State|nil 460 ;; get-move: State x Token --> State|nil
450 461
451 (defsubst sgml-get-move (state token) 462 (defsubst sgml-get-move (state token)
452 "Return a new state or nil, after traversing TOKEN from STATE." 463 "Return a new state or nil, after traversing TOKEN from STATE."
453 (cond 464 (cond
499 (sgml-tokens-of-moves (sgml-state-reqs state)) 510 (sgml-tokens-of-moves (sgml-state-reqs state))
500 (or (sgml-required-tokens (sgml-and-state-substate state)) 511 (or (sgml-required-tokens (sgml-and-state-substate state))
501 (loop for s in (sgml-and-state-dfas state) 512 (loop for s in (sgml-and-state-dfas state)
502 nconc (sgml-tokens-of-moves (sgml-state-reqs s))) 513 nconc (sgml-tokens-of-moves (sgml-state-reqs s)))
503 (sgml-tokens-of-moves (sgml-state-reqs (sgml-and-state-next state)))))) 514 (sgml-tokens-of-moves (sgml-state-reqs (sgml-and-state-next state))))))
504
505
506 (defsubst sgml-final (state)
507 (if (sgml-normal-state-p state)
508 (sgml-state-final-p state)
509 (sgml-final-and state)))
510
511 (defun sgml-final-and (state)
512 (and (sgml-final (sgml-and-state-substate state))
513 (loop for s in (sgml-and-state-dfas state)
514 always (sgml-state-final-p s))
515 (sgml-state-final-p (sgml-and-state-next state))))
516 515
517 (defun sgml-optional-tokens (state) 516 (defun sgml-optional-tokens (state)
518 (if (sgml-normal-state-p state) 517 (if (sgml-normal-state-p state)
519 (sgml-tokens-of-moves (sgml-state-opts state)) 518 (sgml-tokens-of-moves (sgml-state-opts state))
520 (nconc 519 (nconc
1964 (sgml-trace-lookup "Start looking for %s entity %s public %s system %s" 1963 (sgml-trace-lookup "Start looking for %s entity %s public %s system %s"
1965 (or type "-") 1964 (or type "-")
1966 (or name "?") 1965 (or name "?")
1967 pubid 1966 pubid
1968 (sgml-extid-sysid extid)) 1967 (sgml-extid-sysid extid))
1969 (or (if sgml-system-identifiers-are-preferred 1968 (or (if (and sgml-system-identifiers-are-preferred
1970 (sgml-lookup-sysid-as-file extid)) 1969 (sgml-extid-sysid extid))
1970 (or (sgml-lookup-sysid-as-file extid)
1971 (sgml-path-lookup ;Try the path also, but only using sysid
1972 (sgml-make-extid nil (sgml-extid-sysid extid))
1973 nil nil)))
1971 (sgml-catalog-lookup sgml-current-localcat pubid type name) 1974 (sgml-catalog-lookup sgml-current-localcat pubid type name)
1972 (sgml-catalog-lookup sgml-catalog-files pubid type name) 1975 (sgml-catalog-lookup sgml-catalog-files pubid type name)
1973 (if (not sgml-system-identifiers-are-preferred) 1976 (if (not sgml-system-identifiers-are-preferred)
1974 (sgml-lookup-sysid-as-file extid)) 1977 (sgml-lookup-sysid-as-file extid))
1975 (sgml-path-lookup extid type name)))) 1978 (sgml-path-lookup extid type name))))
3638 3641
3639 (defun sgml-modify-dtd (modifier) 3642 (defun sgml-modify-dtd (modifier)
3640 (setq sgml-dtd-info (sgml-pstate-dtd sgml-buffer-parse-state) 3643 (setq sgml-dtd-info (sgml-pstate-dtd sgml-buffer-parse-state)
3641 sgml-top-tree (sgml-pstate-top-tree sgml-buffer-parse-state)) 3644 sgml-top-tree (sgml-pstate-top-tree sgml-buffer-parse-state))
3642 (sgml-set-global) 3645 (sgml-set-global)
3643 ;;*** what is sgml-current-tree now? 3646 (setq sgml-current-tree sgml-top-tree)
3644 (while (stringp (cadr modifier)) ; Loop thru the context elements 3647 (while (stringp (cadr modifier)) ; Loop thru the context elements
3645 (let ((et (sgml-lookup-eltype (car modifier)))) 3648 (let ((et (sgml-lookup-eltype (car modifier))))
3646 (sgml-open-element et nil (point-min) (point-min)) 3649 (sgml-open-element et nil (point-min) (point-min))
3647 (setq modifier (cdr modifier)))) 3650 (setq modifier (cdr modifier))))
3648 3651