Commit 72772282 authored by Robert Griesemer's avatar Robert Griesemer

- more frontend pieces in Go

SVN=126744
parent 8be580e2
// 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;
}
// 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;
}
// 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;
}
// 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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment