diff options
author | Robert Griesemer <gri@golang.org> | 2009-11-03 14:05:18 -0800 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2009-11-03 14:05:18 -0800 |
commit | 5e91150fe9fcb7b653b3ff3cafa3c5efaf2ea706 (patch) | |
tree | 9ff17efaef4be7d37270cdd226646e93e8b1e998 /src/pkg/go/ast | |
parent | b591b9b5fd617b7027293bd16af74d54ec8268c4 (diff) | |
download | golang-5e91150fe9fcb7b653b3ff3cafa3c5efaf2ea706.tar.gz |
Note: This is an exact replica and replacement of CL 1018027
(which I uploaded at home and thus can't upload from here).
CL 1018027 was reviewed.
- added comments to scope.go
- commented out some code that is not yet needed
(and which showed up prominently in the documentation)
R=rsc
http://go/go-review/1017017
Diffstat (limited to 'src/pkg/go/ast')
-rw-r--r-- | src/pkg/go/ast/scope.go | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/pkg/go/ast/scope.go b/src/pkg/go/ast/scope.go index 9a62686e3..688ae50c7 100644 --- a/src/pkg/go/ast/scope.go +++ b/src/pkg/go/ast/scope.go @@ -4,17 +4,28 @@ package ast +// A Scope maintains the set of identifiers visible +// in the scope and a link to the immediately surrounding +// (outer) scope. +// +// NOTE: WORK IN PROGRESS +// type Scope struct { Outer *Scope; Names map[string]*Ident } +// NewScope creates a new scope nested in the outer scope. func NewScope(outer *Scope) *Scope { return &Scope{outer, make(map[string]*Ident)}; } +// Declare inserts an identifier into the scope s. If the +// declaration succeeds, the result is true, if the identifier +// exists already in the scope, the result is false. +// func (s *Scope) Declare(ident *Ident) bool { if _, found := s.Names[ident.Value]; found { return false; @@ -24,6 +35,10 @@ func (s *Scope) Declare(ident *Ident) bool { } +// Lookup looks up an identifier in the current scope chain. +// If the identifier is found, it is returned; otherwise the +// result is nil. +// func (s *Scope) Lookup(name string) *Ident { for ; s != nil; s = s.Outer { if ident, found := s.Names[name]; found { @@ -34,6 +49,8 @@ func (s *Scope) Lookup(name string) *Ident { } +// TODO(gri) Uncomment once this code is needed. +/* var Universe = Scope { Names: map[string]*Ident { // basic types @@ -74,3 +91,4 @@ var Universe = Scope { "println": nil, } } +*/ |