mirror of https://github.com/aamine/cbc
* 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:
parent
1dedd1d283
commit
a0c7198db9
|
@ -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
5
ToDo
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
|
@ -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; }
|
||||
|
|
Loading…
Reference in New Issue