Commit Graph

2 Commits

Author SHA1 Message Date
Minero Aoki eca722f362 * net/loveruby/cflat/compiler/TypeChecker.java: transform pointer arithmetic to normal arithmetic (e.g. ptr+7 => ptr+(7*sizeof(*ptr))).
* net/loveruby/cflat/compiler/TypeChecker.java: int-ptr is invalid.
* net/loveruby/cflat/compiler/CodeGenerator.java: implement pointer arithmetic correctly (e.g. *(ptr+1) for various types work now).
* net/loveruby/cflat/ast/PrefixOpNode.java: inherit UnaryArithmeticOpNode.
* net/loveruby/cflat/ast/SuffixOpNode.java: ditto.
* net/loveruby/cflat/ast/UnaryArithmeticOpNode.java: new file.
* net/loveruby/cflat/ast/CastNode.java: is not assignable.
* net/loveruby/cflat/type/TypeTable.java: new method #pointerSize, #ptrDiffTypeRef.
* net/loveruby/cflat/type/ArrayType.java: fetch pointer size from a TypeTable.
* net/loveruby/cflat/type/ArrayType.java: we can cast any pointers to void*.
* net/loveruby/cflat/type/PointerType.java: ditto.
* net/loveruby/cflat/type/IntegerTypeRef.java (equals): check name equality by #equals, not ==.
* test: test pointer arithmetic.
* test: CastNode does not becomes LHS, do not check it.
* import/string.hb: add mem* functions.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3979 1b9489fe-b721-0410-924e-b54b9192deb8
2008-08-31 10:24:40 +00:00
Minero Aoki 4c48f185f6 * AST class hierarchy grand restruct: remove and unify many operator nodes.
* net/loveruby/cflat/ast/UnaryOpNode.java: unify arithmetic unary op nodes (+, -, !, ~).
* net/loveruby/cflat/ast/BinaryOpNode.java: unify almost all binary op nodes (+, -, *, /, %, &, |, ^, <<, >>) and comparison operators (==, !=, >, >=, <, <=).
* net/loveruby/cflat/ast/PrefixOpNode.java: new class.  unify prefix inc/dec.
* net/loveruby/cflat/ast/SuffixOpNode.java: new class.  unify suffix inc/dec.
* net/loveruby/cflat/ast/OpAssignNode.java: new class.  unify all *AssignNode.
* net/loveruby/cflat/parser/Parser.jj: follow these grand changes.
* net/loveruby/cflat/compiler/Visitor.java: ditto.
* net/loveruby/cflat/compiler/CodeGenerator.java: ditto.
* net/loveruby/cflat/compiler/TypeChecker.java: ditto.
* net/loveruby/cflat/ast/DereferenceNode.java: ditto.
* net/loveruby/cflat/ast/LogicalAndNode.java: ditto.
* net/loveruby/cflat/ast/LogicalOrNode.java: ditto.
* net/loveruby/cflat/ast/AddressNode.java: ditto.
* net/loveruby/cflat/ast/ASTVisitor.java: ditto.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3807 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-05 14:48:18 +00:00