summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2009-09-25 15:43:43 -0700
committerRobert Griesemer <gri@golang.org>2009-09-25 15:43:43 -0700
commit0ac6e2ce527f78cc5ea8add2d455fb1ace9eefda (patch)
tree75de204fd841a92657955db3d0742371bdeea3bd
parent9547fc67a1733f363b1e663537baf0d085306a3a (diff)
downloadgolang-0ac6e2ce527f78cc5ea8add2d455fb1ace9eefda.tar.gz
delete unused file
### 3656 XXstart 3656 XXedit 3656 src/cmd/5g/ggen.c XXedit 3656 src/pkg/runtime/arm/asm.s XXedit 3656 test/arm-pass.txt # submit 3656 hg ci -u 'Kai Backman <kaib@golang.org>' -d '1253922857 25200' -l - <<'HGEOF' support for go and defer. go/test: passes 64% (218/339) R=rsc APPROVED=rsc DELTA=60 (39 added, 0 deleted, 21 changed) OCL=35018 CL=35018
-rw-r--r--usr/gri/pretty/symboltable.go412
1 files changed, 0 insertions, 412 deletions
diff --git a/usr/gri/pretty/symboltable.go b/usr/gri/pretty/symboltable.go
deleted file mode 100644
index 3f707198a..000000000
--- a/usr/gri/pretty/symboltable.go
+++ /dev/null
@@ -1,412 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package SymbolTable
-
-import (
- "container/vector";
- "unicode";
- "utf8";
-)
-
-
-// ----------------------------------------------------------------------------
-// Support
-
-func assert(pred bool) {
- if !pred {
- panic("assertion failed");
- }
-}
-
-
-// ----------------------------------------------------------------------------
-// Objects
-
-// Object represents a language object, such as a constant, variable, type, etc.
-
-const /* kind */ (
- BADOBJ = iota; // error handling
- NONE; // kind unknown
- CONST; TYPE; VAR; FIELD; FUNC; BUILTIN; PACKAGE; LABEL;
- END; // end of scope (import/export only)
-)
-
-
-func KindStr(kind int) string {
- switch kind {
- case BADOBJ: return "BADOBJ";
- case NONE: return "NONE";
- case CONST: return "CONST";
- case TYPE: return "TYPE";
- case VAR: return "VAR";
- case FIELD: return "FIELD";
- case FUNC: return "FUNC";
- case BUILTIN: return "BUILTIN";
- case PACKAGE: return "PACKAGE";
- case LABEL: return "LABEL";
- case END: return "END";
- }
- return "<unknown Object kind>";
-}
-
-
-type Object struct {
- Id int; // unique id
-
- Pos int; // source position (< 0 if unknown position)
- Kind int; // object kind
- Ident string;
- Typ *Type; // nil for packages
- Pnolev int; // >= 0: package no., <= 0: function nesting level, 0: global level
-}
-
-
-func (obj *Object) IsExported() bool {
- switch obj.Kind {
- case NONE /* FUNC for now */, CONST, TYPE, VAR, FUNC:
- ch, size := utf8.DecodeRuneInString(obj.Ident);
- return unicode.IsUpper(ch);
- }
- return false;
-}
-
-
-func (obj* Object) String() string {
- if obj != nil {
- return
- "Object(" +
- KindStr(obj.Kind) + ", " +
- obj.Ident +
- ")";
- }
- return "nil";
-}
-
-
-var Universe_void_typ *Type // initialized by Universe to Universe.void_typ
-var objectId int;
-
-func NewObject(pos, kind int, ident string) *Object {
- obj := new(Object);
- obj.Id = objectId;
- objectId++;
-
- obj.Pos = pos;
- obj.Kind = kind;
- obj.Ident = ident;
- obj.Typ = Universe_void_typ; // TODO would it be better to use nil instead?
- obj.Pnolev = 0;
-
- return obj;
-}
-
-
-// ----------------------------------------------------------------------------
-// Scopes
-
-type Scope struct {
- Parent *Scope;
- entries map[string] *Object;
-}
-
-
-func NewScope(parent *Scope) *Scope {
- scope := new(Scope);
- scope.Parent = parent;
- scope.entries = make(map[string] *Object, 8);
- return scope;
-}
-
-
-func (scope *Scope) LookupLocal(ident string) *Object {
- obj, found := scope.entries[ident];
- if found {
- return obj;
- }
- return nil;
-}
-
-
-func (scope *Scope) Lookup(ident string) *Object {
- for scope != nil {
- obj := scope.LookupLocal(ident);
- if obj != nil {
- return obj;
- }
- scope = scope.Parent;
- }
- return nil;
-}
-
-
-func (scope *Scope) add(obj *Object) {
- scope.entries[obj.Ident] = obj;
-}
-
-
-func (scope *Scope) Insert(obj *Object) {
- if scope.LookupLocal(obj.Ident) != nil {
- panic("obj already inserted");
- }
- scope.add(obj);
-}
-
-
-func (scope *Scope) InsertImport(obj *Object) *Object {
- p := scope.LookupLocal(obj.Ident);
- if p == nil {
- scope.add(obj);
- p = obj;
- }
- return p;
-}
-
-
-func (scope *Scope) Print() {
- print("scope {");
- for key := range scope.entries {
- print("\n ", key);
- }
- print("\n}\n");
-}
-
-
-// ----------------------------------------------------------------------------
-// Types
-
-const /* form */ (
- // internal types
- // We should never see one of these.
- UNDEF = iota;
-
- // VOID types are used when we don't have a type. Never exported.
- // (exported type forms must be > 0)
- VOID;
-
- // BADTYPE types are compatible with any type and don't cause further errors.
- // They are introduced only as a result of an error in the source code. A
- // correct program cannot have BAD types.
- BADTYPE;
-
- // FORWARD types are forward-declared (incomplete) types. They can only
- // be used as element types of pointer types and must be resolved before
- // their internals are accessible.
- FORWARD;
-
- // TUPLE types represent multi-valued result types of functions and
- // methods.
- TUPLE;
-
- // The type of nil.
- NIL;
-
- // A type name
- TYPENAME;
-
- // basic types
- BOOL; UINT; INT; FLOAT; STRING; INTEGER;
-
- // composite types
- ALIAS; ARRAY; STRUCT; INTERFACE; MAP; CHANNEL; FUNCTION; METHOD; POINTER;
-
- // open-ended parameter type
- ELLIPSIS
-)
-
-
-func FormStr(form int) string {
- switch form {
- case VOID: return "VOID";
- case BADTYPE: return "BADTYPE";
- case FORWARD: return "FORWARD";
- case TUPLE: return "TUPLE";
- case NIL: return "NIL";
- case TYPENAME: return "TYPENAME";
- case BOOL: return "BOOL";
- case UINT: return "UINT";
- case INT: return "INT";
- case FLOAT: return "FLOAT";
- case STRING: return "STRING";
- case ALIAS: return "ALIAS";
- case ARRAY: return "ARRAY";
- case STRUCT: return "STRUCT";
- case INTERFACE: return "INTERFACE";
- case MAP: return "MAP";
- case CHANNEL: return "CHANNEL";
- case FUNCTION: return "FUNCTION";
- case METHOD: return "METHOD";
- case POINTER: return "POINTER";
- case ELLIPSIS: return "ELLIPSIS";
- }
- return "<unknown Type form>";
-}
-
-
-const /* channel mode */ (
- FULL = iota;
- SEND;
- RECV;
-)
-
-
-type Type struct {
- Id int; // unique id
-
- Ref int; // for exporting only: >= 0 means already exported
- Form int; // type form
- Size int; // size in bytes
- Obj *Object; // primary type object or nil
- Scope *Scope; // locals, fields & methods
-
- // syntactic components
- Pos int; // source position (< 0 if unknown position)
- Len int; // array length
- Mode int; // channel mode
- Key *Type; // receiver type or map key
- Elt *Type; // type name type, array, map, channel or pointer element type, function result type
- List *vector.Vector; End int; // struct fields, interface methods, function parameters
-}
-
-
-var typeId int;
-
-func NewType(pos, form int) *Type {
- typ := new(Type);
- typ.Id = typeId;
- typeId++;
-
- typ.Ref = -1; // not yet exported
- typ.Pos = pos;
- typ.Form = form;
-
- return typ;
-}
-
-
-func (typ* Type) String() string {
- if typ != nil {
- return
- "Type(" +
- FormStr(typ.Form) +
- ")";
- }
- return "nil";
-}
-
-
-// ----------------------------------------------------------------------------
-// Universe scope
-
-var (
- Universe *Scope;
- PredeclaredTypes vector.Vector;
-
- // internal types
- Void_typ,
- Bad_typ,
- Nil_typ,
-
- // basic types
- Bool_typ,
- Uint8_typ,
- Uint16_typ,
- Uint32_typ,
- Uint64_typ,
- Int8_typ,
- Int16_typ,
- Int32_typ,
- Int64_typ,
- Float32_typ,
- Float64_typ,
- Float80_typ,
- String_typ,
- Integer_typ,
-
- // convenience types
- Byte_typ,
- Uint_typ,
- Int_typ,
- Float_typ,
- Uintptr_typ *Type;
-
- True_obj,
- False_obj,
- Iota_obj,
- Nil_obj *Object;
-)
-
-
-func declObj(kind int, ident string, typ *Type) *Object {
- obj := NewObject(-1 /* no source pos */, kind, ident);
- obj.Typ = typ;
- if kind == TYPE && typ.Obj == nil {
- typ.Obj = obj; // set primary type object
- }
- Universe.Insert(obj);
- return obj
-}
-
-
-func declType(form int, ident string, size int) *Type {
- typ := NewType(-1 /* no source pos */, form);
- typ.Size = size;
- return declObj(TYPE, ident, typ).Typ;
-}
-
-
-func register(typ *Type) *Type {
- typ.Ref = PredeclaredTypes.Len();
- PredeclaredTypes.Push(typ);
- return typ;
-}
-
-
-func init() {
- Universe = NewScope(nil); // universe has no parent
- PredeclaredTypes.Init(32);
-
- // Interal types
- Void_typ = NewType(-1 /* no source pos */, VOID);
- Universe_void_typ = Void_typ;
- Bad_typ = NewType(-1 /* no source pos */, BADTYPE);
- Nil_typ = NewType(-1 /* no source pos */, NIL);
-
- // Basic types
- Bool_typ = register(declType(BOOL, "bool", 1));
- Uint8_typ = register(declType(UINT, "uint8", 1));
- Uint16_typ = register(declType(UINT, "uint16", 2));
- Uint32_typ = register(declType(UINT, "uint32", 4));
- Uint64_typ = register(declType(UINT, "uint64", 8));
- Int8_typ = register(declType(INT, "int8", 1));
- Int16_typ = register(declType(INT, "int16", 2));
- Int32_typ = register(declType(INT, "int32", 4));
- Int64_typ = register(declType(INT, "int64", 8));
- Float32_typ = register(declType(FLOAT, "float32", 4));
- Float64_typ = register(declType(FLOAT, "float64", 8));
- Float80_typ = register(declType(FLOAT, "float80", 10));
- String_typ = register(declType(STRING, "string", 8));
- Integer_typ = register(declType(INTEGER, "integer", 8));
-
- // All but 'byte' should be platform-dependent, eventually.
- Byte_typ = register(declType(UINT, "byte", 1));
- Uint_typ = register(declType(UINT, "uint", 4));
- Int_typ = register(declType(INT, "int", 4));
- Float_typ = register(declType(FLOAT, "float", 4));
- Uintptr_typ = register(declType(UINT, "uintptr", 8));
-
- // Predeclared constants
- True_obj = declObj(CONST, "true", Bool_typ);
- False_obj = declObj(CONST, "false", Bool_typ);
- Iota_obj = declObj(CONST, "iota", Int_typ);
- Nil_obj = declObj(CONST, "nil", Nil_typ);
-
- // Builtin functions
- declObj(BUILTIN, "len", Void_typ);
- declObj(BUILTIN, "new", Void_typ);
- declObj(BUILTIN, "panic", Void_typ);
- declObj(BUILTIN, "print", Void_typ);
-
- // scope.Print();
-}