* net/loveruby/cflat/parser/Parser.jj: composite literal removed.

* net/loveruby/cflat/ast/CompositeLiteralNode.java: removed.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3768 1b9489fe-b721-0410-924e-b54b9192deb8
This commit is contained in:
Minero Aoki 2008-01-01 18:00:25 +00:00
parent 1dedd1d283
commit a0c7198db9
4 changed files with 9 additions and 62 deletions

View File

@ -1,3 +1,9 @@
Wed Jan 2 03:00:22 2008 Minero Aoki <aamine@loveruby.net>
* net/loveruby/cflat/parser/Parser.jj: composite literal removed.
* net/loveruby/cflat/ast/CompositeLiteralNode.java: removed.
Wed Jan 2 01:32:12 2008 Minero Aoki <aamine@loveruby.net>
* net/loveruby/cflat/compiler/TypeChecker.java: better error

5
ToDo
View File

@ -115,11 +115,6 @@
- as LHS
- as RHS
- recursive definition with pointer
* composite literal {1,2,3...}
- parse (initializer)
- parse (rhs)
* type check
* code generation
- pointer
- *ptr
- *ptr = val

View File

@ -1,34 +0,0 @@
package net.loveruby.cflat.ast;
import net.loveruby.cflat.type.*;
import java.util.*;
public class CompositeLiteralNode extends Node {
protected List members;
protected Type type;
public CompositeLiteralNode(List membs) {
this.members = membs;
}
public Iterator members() {
return members.iterator();
}
public Type type() {
if (type == null) {
throw new Error("CompositeLiteralNode#type == null");
}
return type;
}
public void setType(Type t) {
if (type != null) {
throw new Error("CompositeLiteralNode#setType called twice");
}
type = t;
}
public void accept(ASTVisitor visitor) {
throw new Error("CompositeLiteralNode#accept called");
}
}

View File

@ -397,12 +397,12 @@ List defvars():
Node init = null;
}
{
priv=storage() type=type() name=name() ["=" init=rhs_expr()]
priv=storage() type=type() name=name() ["=" init=expr()]
{
defs.add(new DefinedVariable(priv, type, name, init));
init = null;
}
("," name=name() ["=" init=rhs_expr()]
("," name=name() ["=" init=expr()]
{
defs.add(new DefinedVariable(priv, type, name, init));
init = null;
@ -852,7 +852,7 @@ Node expr():
}
{
LOOKAHEAD(term() "=")
l=term() "=" r=rhs_expr()
l=term() "=" r=expr()
{
return new AssignNode(l, r);
}
@ -874,26 +874,6 @@ Node expr():
}
}
Node rhs_expr():
{ Node r; }
{
r=composite_literal() { return r; }
| r=expr() { return r; }
}
CompositeLiteralNode composite_literal():
{
List membs = new ArrayList();
Node n;
}
{
"{" [n=rhs_expr() { membs.add(n); }
("," n=rhs_expr() { membs.add(n); })*] "}"
{
return new CompositeLiteralNode(membs);
}
}
Class opassign_op(): {}
{
( "+=" { return PlusAssignNode.class; }