mirror of https://github.com/aamine/cbc
r4903@macbookpro: aamine | 2009-05-24 19:22:57 +0900
* net/loveruby/cflat/compiler/TypeResolver.java: now 3 pathes (define, resolve entities, resolve expr) are not required; just use old 2 pathes (define, resolve). Old TypeResolver fixed a type of AddressNode, it requires 3 path. But current implementation fixes a type of AddressNode in DereferenceChecker, we do not need 3 path. * net/loveruby/cflat/ast/AST.java: #entities -> #definitions. * net/loveruby/cflat/ast/AST.java: new method #entities, it returns #definitions + #declarations. * net/loveruby/cflat/compiler/TypeResolver.java: follow it. * net/loveruby/cflat/compiler/LocalResolver.java: follow it. git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4239 1b9489fe-b721-0410-924e-b54b9192deb8
This commit is contained in:
parent
bdfc0de55c
commit
bfacf5e6c1
18
ChangeLog
18
ChangeLog
|
@ -1,3 +1,21 @@
|
|||
Sun May 24 19:23:28 2009 Minero Aoki <aamine@loveruby.net>
|
||||
|
||||
* net/loveruby/cflat/compiler/TypeResolver.java: now 3 pathes
|
||||
(define, resolve entities, resolve expr) are not required; just
|
||||
use old 2 pathes (define, resolve). Old TypeResolver fixed a type
|
||||
of AddressNode, it requires 3 path. But current implementation
|
||||
fixes a type of AddressNode in DereferenceChecker, we do not need
|
||||
3 path.
|
||||
|
||||
* net/loveruby/cflat/ast/AST.java: #entities -> #definitions.
|
||||
|
||||
* net/loveruby/cflat/ast/AST.java: new method #entities, it
|
||||
returns #definitions + #declarations.
|
||||
|
||||
* net/loveruby/cflat/compiler/TypeResolver.java: follow it.
|
||||
|
||||
* net/loveruby/cflat/compiler/LocalResolver.java: follow it.
|
||||
|
||||
Sun May 24 11:58:15 2009 Minero Aoki <aamine@loveruby.net>
|
||||
|
||||
* net/loveruby/cflat/compiler/IRGenerator.java (If): refactoring:
|
||||
|
|
|
@ -29,6 +29,16 @@ public class AST extends Node {
|
|||
return result;
|
||||
}
|
||||
|
||||
public List<Entity> entities() {
|
||||
List<Entity> result = new ArrayList<Entity>();
|
||||
result.addAll(declarations.funcdecls);
|
||||
result.addAll(declarations.vardecls);
|
||||
result.addAll(declarations.defvars);
|
||||
result.addAll(declarations.defuns);
|
||||
result.addAll(declarations.constants);
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<Entity> declarations() {
|
||||
List<Entity> result = new ArrayList<Entity>();
|
||||
result.addAll(declarations.funcdecls);
|
||||
|
@ -36,7 +46,7 @@ public class AST extends Node {
|
|||
return result;
|
||||
}
|
||||
|
||||
public List<Entity> entities() {
|
||||
public List<Entity> definitions() {
|
||||
List<Entity> result = new ArrayList<Entity>();
|
||||
result.addAll(declarations.defvars);
|
||||
result.addAll(declarations.defuns);
|
||||
|
|
|
@ -35,7 +35,7 @@ public class LocalResolver extends Visitor {
|
|||
for (Entity decl : ast.declarations()) {
|
||||
toplevel.declareEntity(decl);
|
||||
}
|
||||
for (Entity ent : ast.entities()) {
|
||||
for (Entity ent : ast.definitions()) {
|
||||
toplevel.defineEntity(ent);
|
||||
}
|
||||
// #@@}
|
||||
|
|
|
@ -25,24 +25,9 @@ public class TypeResolver extends Visitor
|
|||
for (TypeDefinition t : ast.types()) {
|
||||
t.accept(this);
|
||||
}
|
||||
for (Entity d : ast.declarations()) {
|
||||
d.accept(this);
|
||||
}
|
||||
for (Entity e : ast.entities()) {
|
||||
e.accept(this);
|
||||
}
|
||||
|
||||
for (DefinedVariable var : ast.definedVariables()) {
|
||||
if (var.hasInitializer()) {
|
||||
visitExpr(var.initializer());
|
||||
}
|
||||
}
|
||||
for (Constant c : ast.constants()) {
|
||||
visitExpr(c.value());
|
||||
}
|
||||
for (DefinedFunction f : ast.definedFunctions()) {
|
||||
visitStmt(f.body());
|
||||
}
|
||||
// #@@}
|
||||
}
|
||||
// #@@}
|
||||
|
@ -112,6 +97,9 @@ public class TypeResolver extends Visitor
|
|||
// #@@range/DefinedVariable{
|
||||
public Void visit(DefinedVariable var) {
|
||||
bindType(var.typeNode());
|
||||
if (var.hasInitializer()) {
|
||||
visitExpr(var.initializer());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
// #@@}
|
||||
|
@ -123,12 +111,14 @@ public class TypeResolver extends Visitor
|
|||
|
||||
public Void visit(Constant c) {
|
||||
bindType(c.typeNode());
|
||||
visitExpr(c.value());
|
||||
return null;
|
||||
}
|
||||
|
||||
// #@@range/DefinedFunction{
|
||||
public Void visit(DefinedFunction func) {
|
||||
resolveFunctionHeader(func);
|
||||
visitStmt(func.body());
|
||||
return null;
|
||||
}
|
||||
// #@@}
|
||||
|
@ -155,12 +145,7 @@ public class TypeResolver extends Visitor
|
|||
|
||||
public Void visit(BlockNode node) {
|
||||
for (DefinedVariable var : node.variables()) {
|
||||
bindType(var.typeNode());
|
||||
}
|
||||
for (DefinedVariable var : node.variables()) {
|
||||
if (var.hasInitializer()) {
|
||||
visitExpr(var.initializer());
|
||||
}
|
||||
var.accept(this);
|
||||
}
|
||||
visitStmts(node.stmts());
|
||||
return null;
|
||||
|
|
Loading…
Reference in New Issue