diff options
author | Ludovic Courtes | 2006-02-28 21:40:26 +0000 |
---|---|---|
committer | Ludovic Courtes | 2006-02-28 21:40:26 +0000 |
commit | bc9090d69ebe3c2612efd830b859d4c1c896aae0 (patch) | |
tree | f22905d7e16b7a76624e1def45e7491ba708d969 /src/guile/skribilo/ast.scm | |
parent | 9c00c232438cb83430397080e1c810aa33da460a (diff) | |
download | skribilo-bc9090d69ebe3c2612efd830b859d4c1c896aae0.tar.gz skribilo-bc9090d69ebe3c2612efd830b859d4c1c896aae0.tar.lz skribilo-bc9090d69ebe3c2612efd830b859d4c1c896aae0.zip |
Slightly optimized the resolution process (added `ast-resolved?').
* src/guile/skribilo/ast.scm (<ast>): Added a `resolved?' slot, with
accessor `ast-resolved?'.
* src/guile/skribilo/resolve.scm (do-resolve!)[<node>]: Check whether
`ast-resolved?' is true and set it once it's resolved.
git-archimport-id: lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2--patch-37
Diffstat (limited to 'src/guile/skribilo/ast.scm')
-rw-r--r-- | src/guile/skribilo/ast.scm | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/guile/skribilo/ast.scm b/src/guile/skribilo/ast.scm index 1856389..3968b18 100644 --- a/src/guile/skribilo/ast.scm +++ b/src/guile/skribilo/ast.scm @@ -25,6 +25,7 @@ :use-module (skribilo utils syntax) :export (<ast> ast? ast-loc ast-loc-set! ast-parent ast->string ast->file-location + ast-resolved? <command> command? command-fmt command-body <unresolved> unresolved? unresolved-proc @@ -71,8 +72,16 @@ ;;; ====================================================================== ;;FIXME: set! location in <ast> (define-class <ast> () - (parent :accessor ast-parent :init-keyword :parent :init-value 'unspecified) - (loc :init-value #f)) + ;; Parent of this guy. + (parent :accessor ast-parent :init-keyword :parent :init-value 'unspecified) + + ;; Its source location. + (loc :init-value #f) + + ;; This slot is used as an optimization when resolving an AST: sub-parts of + ;; the tree are marked as resolved as soon as they are and don't need to be + ;; traversed again. + (resolved? :accessor ast-resolved? :init-value #f)) (define (ast? obj) (is-a? obj <ast>)) |