Mercurial > hg > xemacs-beta
comparison lisp/psgml/psgml-parse.el @ 70:131b0175ea99 r20-0b30
Import from CVS: tag r20-0b30
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:02:59 +0200 |
parents | ec9a17fef872 |
children | 54cc21c15cbb |
comparison
equal
deleted
inserted
replaced
69:804d1389bcd6 | 70:131b0175ea99 |
---|---|
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.4 1997/03/09 02:37:46 steve Exp $ | 2 ;; $Id: psgml-parse.el,v 1.1.1.1 1996/12/18 22:43:36 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: |
227 "Tree node of markup parsed. | 227 "Tree node of markup parsed. |
228 In case markup closed element this is different from sgml-current-tree. | 228 In case markup closed element this is different from sgml-current-tree. |
229 Only valid after `sgml-parse-to'.") | 229 Only valid after `sgml-parse-to'.") |
230 | 230 |
231 (defvar sgml-markup-start nil | 231 (defvar sgml-markup-start nil |
232 "Start point of markup being parsed.") | 232 "Start point of markup beeing parsed.") |
233 | 233 |
234 (defvar sgml-conref-flag nil | 234 (defvar sgml-conref-flag nil |
235 "This variable is set by `sgml-parse-attribute-specification-list' | 235 "This variable is set by `sgml-parse-attribute-specification-list' |
236 if a CONREF attribute is parsed.") | 236 if a CONREF attribute is parsed.") |
237 | 237 |
443 (defmacro sgml-and-node-dfas (n) | 443 (defmacro sgml-and-node-dfas (n) |
444 (` (cdr (, n)))) | 444 (` (cdr (, n)))) |
445 | 445 |
446 | 446 |
447 ;;; Using states | 447 ;;; Using states |
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 | 448 |
460 ;; get-move: State x Token --> State|nil | 449 ;; get-move: State x Token --> State|nil |
461 | 450 |
462 (defsubst sgml-get-move (state token) | 451 (defsubst sgml-get-move (state token) |
463 "Return a new state or nil, after traversing TOKEN from STATE." | 452 "Return a new state or nil, after traversing TOKEN from STATE." |
510 (sgml-tokens-of-moves (sgml-state-reqs state)) | 499 (sgml-tokens-of-moves (sgml-state-reqs state)) |
511 (or (sgml-required-tokens (sgml-and-state-substate state)) | 500 (or (sgml-required-tokens (sgml-and-state-substate state)) |
512 (loop for s in (sgml-and-state-dfas state) | 501 (loop for s in (sgml-and-state-dfas state) |
513 nconc (sgml-tokens-of-moves (sgml-state-reqs s))) | 502 nconc (sgml-tokens-of-moves (sgml-state-reqs s))) |
514 (sgml-tokens-of-moves (sgml-state-reqs (sgml-and-state-next state)))))) | 503 (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)))) | |
515 | 516 |
516 (defun sgml-optional-tokens (state) | 517 (defun sgml-optional-tokens (state) |
517 (if (sgml-normal-state-p state) | 518 (if (sgml-normal-state-p state) |
518 (sgml-tokens-of-moves (sgml-state-opts state)) | 519 (sgml-tokens-of-moves (sgml-state-opts state)) |
519 (nconc | 520 (nconc |
1963 (sgml-trace-lookup "Start looking for %s entity %s public %s system %s" | 1964 (sgml-trace-lookup "Start looking for %s entity %s public %s system %s" |
1964 (or type "-") | 1965 (or type "-") |
1965 (or name "?") | 1966 (or name "?") |
1966 pubid | 1967 pubid |
1967 (sgml-extid-sysid extid)) | 1968 (sgml-extid-sysid extid)) |
1968 (or (if (and sgml-system-identifiers-are-preferred | 1969 (or (if sgml-system-identifiers-are-preferred |
1969 (sgml-extid-sysid extid)) | 1970 (sgml-lookup-sysid-as-file 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))) | |
1974 (sgml-catalog-lookup sgml-current-localcat pubid type name) | 1971 (sgml-catalog-lookup sgml-current-localcat pubid type name) |
1975 (sgml-catalog-lookup sgml-catalog-files pubid type name) | 1972 (sgml-catalog-lookup sgml-catalog-files pubid type name) |
1976 (if (not sgml-system-identifiers-are-preferred) | 1973 (if (not sgml-system-identifiers-are-preferred) |
1977 (sgml-lookup-sysid-as-file extid)) | 1974 (sgml-lookup-sysid-as-file extid)) |
1978 (sgml-path-lookup extid type name)))) | 1975 (sgml-path-lookup extid type name)))) |
3641 | 3638 |
3642 (defun sgml-modify-dtd (modifier) | 3639 (defun sgml-modify-dtd (modifier) |
3643 (setq sgml-dtd-info (sgml-pstate-dtd sgml-buffer-parse-state) | 3640 (setq sgml-dtd-info (sgml-pstate-dtd sgml-buffer-parse-state) |
3644 sgml-top-tree (sgml-pstate-top-tree sgml-buffer-parse-state)) | 3641 sgml-top-tree (sgml-pstate-top-tree sgml-buffer-parse-state)) |
3645 (sgml-set-global) | 3642 (sgml-set-global) |
3646 (setq sgml-current-tree sgml-top-tree) | 3643 ;;*** what is sgml-current-tree now? |
3647 (while (stringp (cadr modifier)) ; Loop thru the context elements | 3644 (while (stringp (cadr modifier)) ; Loop thru the context elements |
3648 (let ((et (sgml-lookup-eltype (car modifier)))) | 3645 (let ((et (sgml-lookup-eltype (car modifier)))) |
3649 (sgml-open-element et nil (point-min) (point-min)) | 3646 (sgml-open-element et nil (point-min) (point-min)) |
3650 (setq modifier (cdr modifier)))) | 3647 (setq modifier (cdr modifier)))) |
3651 | 3648 |