Mercurial > hg > xemacs-beta
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 |