Minero Aoki
f1f140b5d3
add preproc tags
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3921 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-24 15:10:21 +00:00
Minero Aoki
d626ec5fbb
* net/loveruby/cflat/compiler/TypeChecker.java: implement usual arithmetic conversion for BinaryOpNode.
...
* net/loveruby/cflat/compiler/TypeChecker.java: implement usual arithmetic conversion for OpAssignNode.
* net/loveruby/cflat/compiler/TypeChecker.java: implement usual arithmetic conversion for ++, --.
* net/loveruby/cflat/compiler/TypeChecker.java: new entry point TypeTable#check(AST).
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3920 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-24 14:41:05 +00:00
Minero Aoki
87cbe3bc3b
* net/loveruby/cflat/parser/Parser.jj (SPACES): "\v" is invalid escape sequence in JavaCC.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3919 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-24 10:58:48 +00:00
Minero Aoki
37ecd78688
* net/loveruby/cflat/parser/Parser.jj (INTEGER): 0xUL is invalid.
...
* net/loveruby/cflat/parser/Parser.jj (CHARACTER): 'aa' is invalid.
* net/loveruby/cflat/parser/Parser.jj: refactoring: insert spaces after character set comma.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3917 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-24 06:31:34 +00:00
Minero Aoki
cf5e124336
* net/loveruby/cflat/compiler/TypeChecker.java: TypeTable is useless.
...
* net/loveruby/cflat/compiler/Compiler.java: ditto.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3916 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-17 21:12:16 +00:00
Minero Aoki
2568b19bdf
* net/loveruby/cflat/compiler/TypeChecker.java (mustBeScalar): checks if type is an integer, a pointer, or an array (previous #mustBeScalarAlike definition).
...
* net/loveruby/cflat/compiler/TypeChecker.java (expectsSameInteger, expectsComparableScalars): return immediately after first error.
* net/loveruby/cflat/compiler/TypeChecker.java (PrefixOpNode, SuffixOpNode): allow array parameter.
* net/loveruby/cflat/type/Type.java: new method #isScalar.
* net/loveruby/cflat/type/IntegerType.java: is a scalar.
* net/loveruby/cflat/type/ArrayType.java: is a scalar.
* net/loveruby/cflat/type/PointerType.java: is a scalar.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3915 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-17 21:07:15 +00:00
Minero Aoki
d1d388ab0c
* net/loveruby/cflat/compiler/TypeChecker.java (checkCond): cond expr might be an array.
...
* net/loveruby/cflat/compiler/TypeChecker.java (SwitchNode): cond expr should not be pointer.
* net/loveruby/cflat/compiler/TypeChecker.java: <</>> expects same integer.
* net/loveruby/cflat/compiler/TypeChecker.java: comparison operators accept arrays.
* net/loveruby/cflat/compiler/TypeChecker.java: "!" accepts a pointer and an array.
* net/loveruby/cflat/compiler/TypeChecker.java: new method #mustBeScalarAlike.
* net/loveruby/cflat/compiler/TypeChecker.java (mustBeInteger, mustBeScalar, mustBeScalarAlike): takes operator name.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3914 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-17 20:39:32 +00:00
Minero Aoki
d27ddfebee
* net/loveruby/cflat/compiler/TypeChecker.java (mustBeScalar): array is a scalar.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3913 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-17 19:10:52 +00:00
Minero Aoki
67c1972a8a
* net/loveruby/cflat/compiler/TypeChecker.java: check returning void value.
...
* net/loveruby/cflat/compiler/TypeChecker.java: allow array LHS, only when LHS is a parameter.
* net/loveruby/cflat/ast/Entity.java: define #isParameter here.
* net/loveruby/cflat/ast/Variable.java: remove #isVariable, #isParameter.
* net/loveruby/cflat/ast/ExprNode.java: new method #isParameter.
* net/loveruby/cflat/ast/VariableNode.java: override it.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3912 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-17 19:08:48 +00:00
Minero Aoki
95deed38e4
* net/loveruby/cflat/compiler/TypeChecker.java (checkCond): cond expr might be an array, which is a parameter.
...
* net/loveruby/cflat/compiler/TypeChecker.java (isInvalidReturnType): array is returnable.
* net/loveruby/cflat/compiler/TypeChecker.java (isInvalidLHSType): "unallocated array" means an array which is parameter. Length does not matter.
* net/loveruby/cflat/compiler/DereferenceChecker.java: should check an operand of ++/-- is assignable.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3911 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-17 18:33:18 +00:00
Minero Aoki
b8a0f0ecde
* net/loveruby/cflat/ast/UndefinedVariable.java: should always be NOT private.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3910 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-17 17:33:19 +00:00
Minero Aoki
deeeb03a3e
add preproc tag
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3909 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-17 17:31:13 +00:00
Minero Aoki
55841b6115
* net/loveruby/cflat/compiler/DereferenceChecker.java: add blanks.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3908 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-17 17:30:59 +00:00
Minero Aoki
e50c55f673
remove package directory ir/
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3907 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-16 11:30:20 +00:00
Minero Aoki
a11a16260e
* net/loveruby/cflat/compiler/TypeResolver.java: should check duplicated type definition.
...
* net/loveruby/cflat/type/TypeTable.java: new method #isDefined.
* net/loveruby/cflat/type/TypeTable.java (put): reject duplicated type definition.
* test/recursivetypedef.cb: test duplicated typedef.
* test/test.sh: run it.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3905 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-11 21:49:42 +00:00
Minero Aoki
bcf7042b28
add preproc tags
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3904 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-11 21:28:43 +00:00
Minero Aoki
6849a2f05a
* net/loveruby/cflat/type/TypeTable.java (semanticCheck): check all types by checkRecursiveDefinition. It is not efficient because checking char, short, int, long, ... is not needed, but is more reliable.
...
* net/loveruby/cflat/type/TypeTable.java (checkRecursiveDefinition): should traverse ArrayType.
* net/loveruby/cflat/type/TypeTable.java (checkRecursiveDefinition): should traverse ComplexType and ArrayType (and UserType which points these types) *at the same time*.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3903 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-11 21:23:23 +00:00
Minero Aoki
1d06aa2e2a
add preproc tags
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3899 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-11 18:07:52 +00:00
Minero Aoki
1166d7d0f3
add preproc tags
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3898 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-11 16:28:57 +00:00
Minero Aoki
9c50fd7032
* net/loveruby/cflat/compiler/TypeResolver.java: extract method #defineTypes again.
...
* net/loveruby/cflat/compiler/TypeResolver.java: define types by TypeTable#put here. Get typeref and type from TypeDefinition nodes.
* net/loveruby/cflat/type/TypeTable.java: remove #define. Use #put instead.
* net/loveruby/cflat/ast/TypeDefinition.java: remove #defineIn. Use #definingType instead.
* net/loveruby/cflat/ast/StructNode.java: ditto.
* net/loveruby/cflat/ast/UnionNode.java: ditto.
* net/loveruby/cflat/ast/TypedefNode.java: ditto.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3897 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-11 15:46:32 +00:00
Minero Aoki
52733c96b8
* net/loveruby/cflat/type/TypeTable.java: remove deftype methods, use #put instead.
...
* net/loveruby/cflat/ast/StructNode.java: define type by myself, calling TypeTable#put directly.
* net/loveruby/cflat/ast/UnionNode.java: ditto.
* net/loveruby/cflat/ast/TypedefNode.java: ditto.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3896 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-11 15:35:40 +00:00
Minero Aoki
d3cbcbacf4
* net/loveruby/cflat/compiler/TypeResolver.java: resolving VariableNode is useless, because it is equal to resolving DefinedVariable.
...
* net/loveruby/cflat/compiler/TypeResolver.java: define resolveNodeList, which is an alias of visitNodeList.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3895 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-11 15:26:27 +00:00
Minero Aoki
25ed96e67c
* net/loveruby/cflat/compiler/Compiler.java: new option --dump-stmt, to dump only first statement of main.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3894 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-10 21:54:23 +00:00
Minero Aoki
114ba1ffe6
add comment
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3893 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-10 21:39:11 +00:00
Minero Aoki
8783a9e5fb
* net/loveruby/cflat/parser/Parser.jj: unify newFileParser and newReader.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3892 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-10 21:33:14 +00:00
Minero Aoki
27a5f8c760
add preproc tags
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3890 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-10 20:29:12 +00:00
Minero Aoki
7ffccfb969
* net/loveruby/cflat/compiler/LocalReferenceResolver.java (pushScope): forgot to remove useless line.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3889 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-10 19:29:03 +00:00
Minero Aoki
6895ce1d67
* net/loveruby/cflat/ast/LocalScope.java: new subclass of Scope.
...
* net/loveruby/cflat/ast/Scope.java: move local scope only methods to LocalScope class.
* net/loveruby/cflat/ast/ToplevelScope.java: local scope only methods are moved to LocalScope, do not need to disable #variables, #allVariables, ...
* net/loveruby/cflat/ast/Frame.java: is useless, removed.
* net/loveruby/cflat/ast/DefinedFunction.java: Frame -> LocalScope.
* net/loveruby/cflat/ast/BlockNode.java: Scope -> LocalScope.
* net/loveruby/cflat/compiler/LocalReferenceResolver.java: Frame removed.
* net/loveruby/cflat/compiler/LocalReferenceResolver.java: Scope -> LocalScope.
* net/loveruby/cflat/compiler/LocalReferenceResolver.java (pushScope): check duplicated local variables.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3888 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-10 19:26:07 +00:00
Minero Aoki
209116f66a
* net/loveruby/cflat/ast/Scope.java: use LinkedHashMap to unify entities and entitiesMap (entities should be ordered).
...
* net/loveruby/cflat/ast/Frame.java: ditto.
* net/loveruby/cflat/ast/ToplevelScope.java: ditto.
* net/loveruby/cflat/ast/Scope.java: remove unused method #entities. Use #variables instead.
* net/loveruby/cflat/ast/Frame.java: ditto.
* net/loveruby/cflat/ast/ConstantTable.java: use
* net/loveruby/cflat/compiler/TypeResolver.java: remove useless code.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3887 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-10 18:59:21 +00:00
Minero Aoki
8c885a42bd
* net/loveruby/cflat/ast/Scope.java: ban all allocate* methods, privateEntitiesMap. Use #declareEntity instead.
...
* net/loveruby/cflat/ast/Frame.java: ditto.
* net/loveruby/cflat/ast/ToplevelScope.java: ditto.
* net/loveruby/cflat/ast/ToplevelScope.java (commonSymbols, globalVariables): static local variables are now in each Scopes, collect static local variables from them by myself.
* net/loveruby/cflat/ast/Entity.java: #defineIn removed.
* net/loveruby/cflat/ast/Variable.java: #defineIn removed.
* net/loveruby/cflat/ast/DefinedVariable.java: #defineIn removed.
* net/loveruby/cflat/ast/UndefinedVariable.java: #defineIn removed.
* net/loveruby/cflat/ast/DefinedFunction.java: #defineIn removed.
* net/loveruby/cflat/ast/UndefinedFunction.java: #defineIn removed.
* net/loveruby/cflat/compiler/LocalReferenceResolver.java: follow these changes.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3886 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-10 18:13:29 +00:00
Minero Aoki
1ac456d72e
* net/loveruby/cflat/compiler/LocalReferenceResolver.java: add preproc tag.
...
* net/loveruby/cflat/ast/Scope.java: ditto.
* net/loveruby/cflat/ast/ToplevelScope.java: ditto.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3885 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-10 15:17:30 +00:00
Minero Aoki
0af37dc9cf
* net/loveruby/cflat/asm/Reference.java: new constructor Reference(String) for instance.
...
* net/loveruby/cflat/ast/AST.java: #declarations should include vardecls.
* net/loveruby/cflat/ast/UndefinedVariable.java: #address should return variable symbol.
* net/loveruby/cflat/compiler/LocalReferenceResolver.java: declarations may include variable declaration.
* test/vardecl.cb: test reference of declared external variable.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3884 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-10 13:33:19 +00:00
Minero Aoki
23ada77110
* net/loveruby/cflat/compiler/JumpResolver.java: remove currentBreakTarget and currentContinueTarget to simplify.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3872 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-07 19:59:40 +00:00
Minero Aoki
5e8902cc51
* net/loveruby/cflat/compiler/JumpResolver.java (currentBreakTarget, currentContinueTarget): does not throw exception.
...
* net/loveruby/cflat/compiler/JumpResolver.java: add preproc tags.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3871 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-07 19:46:21 +00:00
Minero Aoki
cd77f10e64
* build.xml: unify task: jar and compile.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3866 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-03 09:37:24 +00:00
Minero Aoki
eb82686b82
* net/loveruby/cflat/parser/Parser.jj: refactoring: extract method: new method addKnownTypedefs.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3865 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-03 09:36:56 +00:00
Minero Aoki
f50dfa8add
* net/loveruby/cflat/compiler/Compiler.java (dumpTokenList): specialToken handling was wrong. We should trace t.specialToken while it becomes null, then follow t.next.
...
* net/loveruby/cflat/parser/Parser.jj: write token name for special tokens.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3864 1b9489fe-b721-0410-924e-b54b9192deb8
2008-02-03 09:30:23 +00:00
Minero Aoki
4bee7c8246
add preproc tags.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3859 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-20 22:07:45 +00:00
Minero Aoki
c118dd43ae
updated
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3858 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-20 20:47:35 +00:00
Minero Aoki
63af21eaf4
* net/loveruby/cflat/compiler/Compiler.java: new command line option -v (show arguments of external command invocation).
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3857 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-20 20:38:06 +00:00
Minero Aoki
d04a86cce8
* net/loveruby/cflat/compiler/Compiler.java: new command line option -S (generate assembly source and quit).
...
* net/loveruby/cflat/compiler/Compiler.java: new command line option -c (assemble and quit).
* net/loveruby/cflat/compiler/Compiler.java: call GNU as and GNU ld directly, instead of gcc.
* net/loveruby/cflat/compiler/Compiler.java (commandMain): refactoring: extract method: parseOptions.
* net/loveruby/cflat/compiler/Compiler.java: refactoring: introduce new class Options and hold all command options in it.
* net/loveruby/cflat/compiler/Compiler.java: refactoring: #compileFile do all tasks by referencing an Options.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3856 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-20 20:28:53 +00:00
Minero Aoki
564d0fe2d1
* net/loveruby/cflat/compiler/LibraryLoader.java: should reject recursive import.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3855 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-20 20:24:58 +00:00
Minero Aoki
bde2429d8d
* net/loveruby/cflat/parser/Parser.jj: produce Error for UnknownEncodingError. Current Java runtime must know UTF-8 encoding.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3854 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-20 17:51:06 +00:00
Minero Aoki
067629484c
* net/loveruby/cflat/parser/Parser.jj: refactoring: reorder member decl.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3853 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-20 16:58:59 +00:00
Minero Aoki
4a50b276ba
* net/loveruby/cflat/parser/Parser.jj: modify preproc tag.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3852 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-20 16:39:26 +00:00
Minero Aoki
d2e6a12902
* net/loveruby/cflat/parser/Parser.jj: change symbol name to fix compile error.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3851 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-20 16:24:25 +00:00
Minero Aoki
13a10588e7
* net/loveruby/cflat/parser/Parser.jj: refactoring: rename rule: defvars -> defvar.
...
* net/loveruby/cflat/parser/Parser.jj: refactoring: extract new symbol defvar_list from block.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3850 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-20 16:22:10 +00:00
Minero Aoki
5c5e0c8781
* net/loveruby/cflat/ast/Declarations.java: refactoring: new method #addDefvars.
...
* net/loveruby/cflat/parser/Parser.jj: use it.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3849 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-20 16:19:13 +00:00
Minero Aoki
2d2dac92e5
* net/loveruby/cflat/ast/Parameter.java: simplify dump output.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3848 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-20 15:42:54 +00:00
Minero Aoki
73b8a0e940
add ToDo
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@3847 1b9489fe-b721-0410-924e-b54b9192deb8
2008-01-20 12:27:41 +00:00