Commit Graph

8 Commits

Author SHA1 Message Date
Minero Aoki fd5caed6fc * net/loveruby/cflat/compiler/TypeChecker.java: fork DereferenceChecker, to reduce catch(SemanticError).
* net/loveruby/cflat/compiler/DereferenceChecker.java: new class.
* net/loveruby/cflat/ast/ExprNode.java (isAssignable, isDereferable): catch SemanticError which may occuer on type.isXXXX.
* net/loveruby/cflat/compiler/Visitor.java: refactoring: rename method: #resolve -> #visitNode.
* net/loveruby/cflat/compiler/Visitor.java: refactoring: rename method: #resolveNodeList -> #visitNodeList.
* net/loveruby/cflat/compiler/JumpResolver.java: ditto.
* net/loveruby/cflat/compiler/LocalReferenceResolver.java: ditto.
* net/loveruby/cflat/compiler/TypeResolver.java: ditto.
* net/loveruby/cflat/compiler/TypeChecker.java: ditto.
* net/loveruby/cflat/compiler/Compiler.java: parse command line options more precisely.
* net/loveruby/cflat/compiler/Compiler.java: new option --compile.
* net/loveruby/cflat/compiler/Compiler.java: new option --dump-reference.
* net/loveruby/cflat/compiler/Compiler.java: new option --dump-semantic.
* net/loveruby/cflat/ast/VariableNode.java (dump): show resolved or not.
* net/loveruby/cflat/ast/TypeNode.java (dump): ditto.
* net/loveruby/cflat/ast/Dumper.java (printMember): ditto.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3819 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-12 19:48:31 +00:00
Minero Aoki 3c595a692e * net/loveruby/cflat/compiler/Compiler.java (invoke): pass through stdout/stderr of child process.
* net/loveruby/cflat/compiler/CodeGenerator.java: #register removed.  Use DSL method al(), cl(), eax() instead.
* net/loveruby/cflat/asm/Register.java: return "%al" for size 1 ax register.
* test/shunit.sh: allow to get stderr of testing command by setting environment variable SHUNIT_VERBOSE.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3812 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-06 17:22:55 +00:00
Minero Aoki 7d66e5dffc * net/loveruby/cflat/compiler/Compiler.java: report error.
* net/loveruby/cflat/parser/Parser.jj: simplify error message.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3806 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-05 04:57:36 +00:00
Minero Aoki 8bc055ed4e * net/loveruby/cflat/compiler/Compiler.java: show error location.
* net/loveruby/cflat/compiler/TypeResolver.java: ditto.
* net/loveruby/cflat/compiler/TypeChecker.java: ditto.
* net/loveruby/cflat/compiler/ErrorHandler.java: ditto.
* net/loveruby/cflat/compiler/LocalReferenceResolver.java: ditto.
* net/loveruby/cflat/compiler/JumpResolver.java: ditto.
* net/loveruby/cflat/type/TypeTable.java: ditto.
* net/loveruby/cflat/ast/Scope.java: ditto.
* net/loveruby/cflat/type/NamedType.java: introduce new common superclass of ComplexType and UserType.
* net/loveruby/cflat/type/ComplexType.java: inherit NamedType.
* net/loveruby/cflat/type/UserType.java: inherit NamedType.
* net/loveruby/cflat/type/StructType.java: memoise defined location.
* net/loveruby/cflat/type/UnionType.java: ditto.
* net/loveruby/cflat/ast/DefinedFunction.java: ditto.
* net/loveruby/cflat/type/TypeTable.java: change define* methods interface to pass all definition informations.
* net/loveruby/cflat/ast/StructNode.java: follow it.
* net/loveruby/cflat/ast/UnionNode.java: follow it.
* net/loveruby/cflat/ast/TypedefNode.java: follow it.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3801 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-05 03:23:27 +00:00
Minero Aoki 132e4cbbb2 * net/loveruby/cflat/compiler/Compiler.java: implement command line option --dump-ast.
* net/loveruby/cflat/compiler/Compiler.java: implement command line option --dump-tokens.
* net/loveruby/cflat/ast/Dumper.java: new class; AST dumper.
* net/loveruby/cflat/ast/Dumpable.java: new interface; AST dumper interface.
* net/loveruby/cflat/ast/*.java: define #dump, #_dump.
* net/loveruby/cflat/asm/Assembler.java: fork utils/TextUtils.java.
* net/loveruby/cflat/utils/TextUtils.java: new file.
* test/stdlib.hb: new header file.
* test/unistd.hb: new header file.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3787 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-03 23:01:49 +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 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