mirror of https://github.com/golang/go.git
parent
8be580e20d
commit
72772282cd
|
|
@ -0,0 +1,66 @@
|
|||
// 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 Globals;
|
||||
|
||||
|
||||
// The following types should really be in their respective files
|
||||
// object.go, type.go, and scope.go but they refer to each other
|
||||
// and we don't know how to handle forward-declared pointers across
|
||||
// packages yet.
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
export Object
|
||||
type Object struct {
|
||||
mark bool; // mark => object marked for export
|
||||
kind int;
|
||||
name string;
|
||||
type_ *Type;
|
||||
pnolev int; // >= 0: package no., <= 0: level, 0: global level of compilation
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
export Type
|
||||
type Type struct {
|
||||
ref int; // for exporting only: >= 0 means already exported
|
||||
form int;
|
||||
flags int; // channels, functions
|
||||
size int; // in bytes
|
||||
len_ int; // array length, no. of parameters (w/o recv)
|
||||
obj *Object; // primary type object or NULL
|
||||
key *Object; // maps
|
||||
elt *Object; // arrays, maps, channels, pointers, references
|
||||
scope *Scope; // incomplete types, structs, interfaces, functions, packages
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
export Scope
|
||||
type Scope struct {
|
||||
parent *Scope;
|
||||
// list ObjList
|
||||
|
||||
}
|
||||
|
||||
|
||||
func (scope *Scope) Lookup(ident string) *Object {
|
||||
panic "UNIMPLEMENTED";
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
||||
func (scope *Scope) Insert(obj *Object) {
|
||||
panic "UNIMPLEMENTED";
|
||||
}
|
||||
|
||||
|
||||
func (scope *Scope) InsertImport(obj *Object) *Object {
|
||||
panic "UNIMPLEMENTED";
|
||||
return nil;
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
// 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 Object
|
||||
|
||||
import Globals "globals"
|
||||
|
||||
|
||||
export BAD, CONST, TYPE, VAR, FUNC, PACKAGE
|
||||
const /* kind */ (
|
||||
BAD = iota; // error handling
|
||||
CONST; TYPE; VAR; FUNC; PACKAGE;
|
||||
PTYPE; // primary type (import/export only)
|
||||
)
|
||||
|
||||
|
||||
type Object Globals.Object
|
||||
|
||||
|
||||
func NewObject(kind int, name string) *Object {
|
||||
obj := new(Object);
|
||||
obj.mark = false;
|
||||
obj.kind = kind;
|
||||
obj.name = name;
|
||||
obj.type_ = nil; // Universe::undef_t;
|
||||
obj.pnolev = 0;
|
||||
return obj;
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
// 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 Scope
|
||||
|
||||
import Globals "Globals"
|
||||
|
||||
type Scope Globals.Scope
|
||||
|
||||
func New(parent *Scope) *Scope {
|
||||
panic "UNIMPLEMENTED";
|
||||
return nil;
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
// 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 Type
|
||||
|
||||
import Globals "globals"
|
||||
|
||||
const /* form */ (
|
||||
// internal types
|
||||
UNDEF = iota; BAD; NIL;
|
||||
// basic types
|
||||
BOOL; UINT; INT; FLOAT; STRING;
|
||||
// 'any' type
|
||||
ANY;
|
||||
// composite types
|
||||
ARRAY; STRUCT; INTERFACE; MAP; CHANNEL; FUNCTION; POINTER; REFERENCE;
|
||||
)
|
||||
|
||||
|
||||
const /* flag */ (
|
||||
SEND = 1 << iota; // chan>
|
||||
RECV; // chan< or method
|
||||
)
|
||||
|
||||
|
||||
type Type Globals.Type
|
||||
|
||||
|
||||
func NewType(form int) *Type {
|
||||
panic "UNIMPLEMENTED";
|
||||
return nil;
|
||||
}
|
||||
Loading…
Reference in New Issue