Commit Graph

14 Commits

Author SHA1 Message Date
Minero Aoki 1dedd1d283 * net/loveruby/cflat/compiler/TypeChecker.java: better error message.
* test/test.sh: run following tests.
* test/deref-semcheck1.cb: check if dereferencing int causes compile error.
* test/deref-semcheck2.cb: check if dereferencing char causes compile error.
* test/deref-semcheck3.cb: check if dereferencing struct causes compile error.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3767 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-01 16:32:15 +00:00
Minero Aoki 705818d1dc * net/loveruby/cflat/compiler/TypeChecker.java: check member validity for s.memb, s->memb, u.memb, u->memb.
* net/loveruby/cflat/type/Type.java: new method #isComplexType.
* net/loveruby/cflat/type/ComplexType.java: override it.
* net/loveruby/cflat/compiler/LocalReferenceResolver.java: should resolve variable initializer.
* net/loveruby/cflat/ast/DefinedVariable.java: new method #hasInitializer.
* test/test.sh: run tests.
* test/struct-semcheck5.cb: check if member is valid on s.memb.
* test/struct-semcheck6.cb: check if member is valid on sptr->memb.
* test/union-semcheck5.cb: check if member is valid on u.memb.
* test/union-semcheck6.cb: check if member is valid on uptr->memb.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3766 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-01 16:24:09 +00:00
Minero Aoki 0b70938a5f * net/loveruby/cflat/compiler/TypeChecker.java: check aref base expr and index expr.
* net/loveruby/cflat/ast/Node.java: new method #isIndexable.
* net/loveruby/cflat/type/Type.java: new method #isIndexable.
* net/loveruby/cflat/type/ArrayType.java: override it.
* net/loveruby/cflat/type/PointerType.java: ditto.
* test/test.sh: test aref and funcall semantic check.
* test/aref-semcheck.cb: check if 1[0] causes error.
* test/funcall-semcheck2.cb: check if 1() causes error.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3765 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-01 15:38:50 +00:00
Minero Aoki 6e3734fcc0 * net/loveruby/cflat/compiler/TypeChecker.java: check function arguments.
* net/loveruby/cflat/ast/FuncallNode.java: rename method: #args -> #argument.
* net/loveruby/cflat/compiler/Visitor.java: ditto.
* net/loveruby/cflat/ast/Params.java: new method #argc, #minArgc.
* net/loveruby/cflat/ast/FixedParams.java: ditto.
* net/loveruby/cflat/ast/VarParams.java: ditto.
* net/loveruby/cflat/ast/Node.java: new method #isCallable.
* net/loveruby/cflat/type/FunctionType.java: new method #acceptsArgc.
* net/loveruby/cflat/type/FunctionType.java: new method #paramTypes.
* net/loveruby/cflat/type/Type.java: new method #isCallable.
* net/loveruby/cflat/type/PointerType.java: ditto.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3764 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-01 15:22:54 +00:00
Minero Aoki 1e4ac4dabf * net/loveruby/cflat/compiler/Compiler.java: create TypeTable here.
* net/loveruby/cflat/compiler/CodeGenerator.java: accepts TypeTable and ErrorHandler.
* net/loveruby/cflat/compiler/TypeResolver.java: ditto.
* net/loveruby/cflat/compiler/TypeChecker.java: ditto.
* net/loveruby/cflat/compiler/TypeChecker.java: set type of AddressNode.
* net/loveruby/cflat/compiler/TypeChecker.java: warn incompatible cast.
* net/loveruby/cflat/compiler/ErrorHandler.java: modify message (error -> warning).
* net/loveruby/cflat/parser/Parser.jj: rename variable: handler -> errorHandler.
* net/loveruby/cflat/ast/AST.java: do not contain TypeTable.
* net/loveruby/cflat/ast/ComplexTypeDefinition.java: new method #type.
* net/loveruby/cflat/ast/StructNode.java: ditto.
* net/loveruby/cflat/ast/UnionNode.java: ditto.
* net/loveruby/cflat/ast/AddressNode.java: receive Type from TypeChcker.
* net/loveruby/cflat/type/TypeTable.java: new method #pointerTo.
* net/loveruby/cflat/type/IntegerType.java (isCompatible): check if self is compatible with other side (be able to cast to other implicitly).
* net/loveruby/cflat/type/IntegerType.java (isCastableTo): allow explicit cast if type of type is same (integer/pointer).
* net/loveruby/cflat/type/PointerType.java: implement #equals.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3763 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-01 14:21:26 +00:00
Minero Aoki 5fc167d2e5 * net/loveruby/cflat/compiler/Compiler.java: invoke TypeChecker.
* net/loveruby/cflat/compiler/TypeChecker.java: check type (incomplete).
* net/loveruby/cflat/type/Type.java: new method #isCompatible, #isCastableTo.
* net/loveruby/cflat/type/IntegerType.java: override them.
* net/loveruby/cflat/type/UnsignedCharType.java: change textize result.
* net/loveruby/cflat/type/UnsignedLongType.java: ditto.
* net/loveruby/cflat/type/UnsignedIntType.java: ditto.
* net/loveruby/cflat/type/UnsignedShortType.java: ditto.
* net/loveruby/cflat/ast/AbstractAssignNode.java: new method #setRHS.
* net/loveruby/cflat/ast/AssignNode.java: is now an AbstractAssignNode.
* net/loveruby/cflat/ast/BinaryOpNode.java: new methods #setLeft, #setRight.
* net/loveruby/cflat/ast/FuncallNode.java (type): does not rely on #function (can get type of non-static function).
* net/loveruby/cflat/ast/CondExprNode.java: new methods #setThenBody, #setElseBody.
* net/loveruby/cflat/ast/TypeNode.java: new constructor by Type.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3762 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-01 12:56:25 +00:00
Minero Aoki 6dc898dbd3 * net/loveruby/cflat/parser/Parser.jj (expr10): then expr is expr().
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3759 1b9489fe-b721-0410-924e-b54b9192deb8
2007-12-25 21:12:31 +00:00
Minero Aoki 3356d1fff4 * net/loveruby/cflat/parser/Parser.jj: 5-1-1 should be 3, not 5.
* test/test.sh: test op association.
* test/assoc.cb: new test case.
* test/Makefile: build it.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3758 1b9489fe-b721-0410-924e-b54b9192deb8
2007-12-25 17:46:37 +00:00
Minero Aoki 67a9866b59 * net/loveruby/cflat/parser/Parser.jj (fixedparams, fixedparam_typerefs, args): simplify lookahead.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3757 1b9489fe-b721-0410-924e-b54b9192deb8
2007-12-24 20:53:23 +00:00
Minero Aoki bda63ace95 * net/loveruby/cflat/parser/Parser.jj: expr0 -> expr1, expr1 -> expr2, ...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3756 1b9489fe-b721-0410-924e-b54b9192deb8
2007-12-24 17:09:37 +00:00
Minero Aoki b8936df200 set svn:ignore again
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3755 1b9489fe-b721-0410-924e-b54b9192deb8
2007-12-24 09:05:01 +00:00
Minero Aoki f80b97402b * net/loveruby/cflat/parser/Parser.jj: use better identifier.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3754 1b9489fe-b721-0410-924e-b54b9192deb8
2007-12-24 09:04:24 +00:00
Minero Aoki dd209e191b import cbc from stdcompiler repository (rev185)
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3753 1b9489fe-b721-0410-924e-b54b9192deb8
2007-12-24 08:19:51 +00:00
Minero Aoki 23905e35fb mkdir top dirs
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3752 1b9489fe-b721-0410-924e-b54b9192deb8
2007-12-24 08:17:21 +00:00