Commit Graph

613 Commits

Author SHA1 Message Date
Torsten Ruger
13a05e7b72 comments and cosmetics 2014-07-24 21:56:31 +03:00
Torsten Ruger
e427bcef43 change method and frame around in calling, easier to understand static first 2014-07-24 14:56:27 +03:00
Torsten Ruger
e408b0e4b9 fixed while instruciton linking after change in method add 2014-07-22 23:27:13 +03:00
Torsten Ruger
eb44011177 fixed that branch numbering bug 2014-07-19 21:15:27 +03:00
Torsten Ruger
c03c4f9cc9 add return instruction and fix the tests 2014-07-18 11:56:46 +03:00
Torsten Ruger
2e79caa791 using yaml as the storage format of the result as it handles graphs out of the box 2014-07-18 00:30:36 +03:00
Torsten Ruger
98db88ac2f not recursing into labels to avoid infinite loops 2014-07-18 00:29:45 +03:00
Torsten Ruger
e02c6ed082 codes the while, but the testing throws stack too deep because loop detection is missing 2014-07-17 16:46:17 +03:00
Torsten Ruger
f00fa98818 fixed import 2014-07-17 03:01:34 +03:00
Torsten Ruger
337b1a8ee0 renamed to kide(crystal) 2014-07-17 02:26:13 +03:00
Torsten Ruger
fb105cb895 had to let go of crystal (sniff) as the name was taken 2014-07-17 01:00:15 +03:00
Torsten Ruger
f8e3f17660 split frame into message (caller) and frame (receiver) 2014-07-17 00:53:19 +03:00
Torsten Ruger
58298ab62b some cleaning of scratches 2014-07-16 22:36:24 +03:00
Torsten Ruger
efeb910843 move branch counter to branch instruction (from if) in preperation of while 2014-07-16 22:28:28 +03:00
Torsten Ruger
7534626d87 fix the if test by naming branch and label and stitching them in constructor 2014-07-16 21:16:08 +03:00
Torsten Ruger
ba15f352db gets the if coded, but test fail die to instruction being a graph now 2014-07-16 20:16:40 +03:00
Torsten Ruger
4185758532 slight rename tremours 2014-07-16 20:16:10 +03:00
Torsten Ruger
1ff7ae2b0a rename method 2014-07-16 19:24:41 +03:00
Torsten Ruger
55cb6bd2d6 working on if 2014-07-16 13:20:47 +03:00
Torsten Ruger
3a152c1295 adds self to sends args 2014-07-15 18:34:03 +03:00
Torsten Ruger
4d725ea1ae adds explicit load_self instruction 2014-07-15 18:27:13 +03:00
Torsten Ruger
930740e1db fixes the tests after fixing hierarchy 2014-07-15 10:35:29 +03:00
Torsten Ruger
49f73c090d fixed tests because of inheritance changes 2014-07-15 09:34:45 +03:00
Torsten Ruger
bb051230f4 fixed relation of values and types that had got watered in the virtual move 2014-07-15 09:31:25 +03:00
Torsten Ruger
102c5c2327 remove singletons and make them constants 2014-07-15 09:15:04 +03:00
Torsten Ruger
3ca61d54eb fixes constant to be values not object. interestingly tests still pass 2014-07-15 09:12:51 +03:00
Torsten Ruger
9891da88a4 fix all tests 2014-07-15 00:00:00 +03:00
Torsten Ruger
b59a9da34e reduce method return type to type and introduce a single instruction for instance get 2014-07-14 21:28:21 +03:00
Torsten Ruger
16a378e3da fix class function test 2014-07-14 17:08:52 +03:00
Torsten Ruger
93bdd8a243 removing exceptions 2014-07-14 16:19:47 +03:00
Torsten Ruger
c7c4387e16 adds self reference and improve methods a little 2014-07-14 14:29:33 +03:00
Torsten Ruger
db8b1488d0 function test, slow but steady 2014-07-14 14:06:09 +03:00
Torsten Ruger
d531a24930 first method test 2014-07-14 11:29:38 +03:00
Torsten Ruger
c1f475070b and another one, and another one.... 2014-07-13 16:00:48 +03:00
Torsten Ruger
ae21863245 one more basic test back online 2014-07-13 14:12:43 +03:00
Torsten Ruger
dc6cb2bb52 a lot of work to get one more test to pass 2014-07-12 21:59:17 +03:00
Torsten Ruger
842c4e3044 copied old boot for later reference 2014-07-12 21:18:45 +03:00
Torsten Ruger
c505db490f brainstorming mode on the new way (tm) 2014-07-10 17:14:38 +03:00
Torsten Ruger
ee5615ec03 fix rename 2014-07-01 19:12:32 +03:00
Torsten Ruger
f74999af57 zwischenstopp 2014-07-01 18:58:25 +03:00
Torsten Ruger
7045a4b256 update reader and implement singletons 2014-07-01 15:57:13 +03:00
Torsten Ruger
94d1140686 remove intel as it is in own rep now 2014-06-30 15:34:51 +03:00
Torsten Ruger
84d27ce9d9 remove arm as it is in own rep now 2014-06-30 15:28:39 +03:00
Torsten Ruger
1e866ae0ae minor 2014-06-30 14:56:58 +03:00
Torsten Ruger
18faeeb042 add the idea of a frame 2014-06-29 19:05:35 +03:00
Torsten Ruger
16ceb2a60d hurra, a first test. looks a lot.... but lets not spoil th efeeling 2014-06-26 18:39:02 +03:00
Torsten Ruger
525f9d45c5 rename 2014-06-26 17:52:15 +03:00
Torsten Ruger
33c62a7db1 update reader 2014-06-26 17:48:33 +03:00
Torsten Ruger
9d0d5aa431 update reader 2014-06-26 11:34:48 +03:00
Torsten Ruger
b9ddd75a33 rewrote with ternary operator for conciseness 2014-06-25 16:03:39 +03:00
Torsten Ruger
d28df7671d add the simplest possible hash replacement with tests 2014-06-25 16:00:24 +03:00
Torsten Ruger
5c887846f0 updates 2014-06-25 15:59:22 +03:00
Torsten Ruger
fe337fad79 rename and a tiny start 2014-06-25 15:20:46 +03:00
Torsten Ruger
e41bb8027d copies of the old code to start the new layer 2014-06-25 02:47:59 +03:00
Torsten Ruger
9b39a3a816 renaming, making space for extra layer 2014-06-25 02:33:44 +03:00
Torsten Ruger
3771f44e62 just moving code around 2014-06-24 19:34:36 +03:00
Torsten Ruger
98de7404ef named syscall register 2014-06-24 12:40:49 +03:00
Torsten Ruger
17904d8e02 rename blocks do_add to be the same as sunctions add_code to blur the difference 2014-06-24 12:36:32 +03:00
Torsten Ruger
43a2649635 new list test and debugs 2014-06-24 12:25:03 +03:00
Torsten Ruger
b8b1d98a7c towards rubys true definition 2014-06-24 12:24:36 +03:00
Torsten Ruger
bc89da0bc1 instance setter 2014-06-24 12:23:58 +03:00
Torsten Ruger
07b98d684a more on method lookup 2014-06-24 12:23:39 +03:00
Torsten Ruger
98e25abf8e broaden ifs possibilities 2014-06-24 12:22:32 +03:00
Torsten Ruger
25c5b2da6e more setter work 2014-06-24 12:20:59 +03:00
Torsten Ruger
dc198ac79f more setter work 2014-06-24 12:20:38 +03:00
Torsten Ruger
9251bab507 add setter and remove debug 2014-06-24 12:20:10 +03:00
Torsten Ruger
a859951a8f slight cleanup and rename test case 2014-06-17 14:25:33 +02:00
Torsten Ruger
7d05b7c42f adds plocks (Proc Block) as descibed in posts. Usage also described, but not coded yet 2014-06-17 01:01:00 +02:00
Torsten Ruger
a68d84a781 introducing references 2014-06-14 23:48:12 +03:00
Torsten Ruger
4db54a760e gives values their own directory and seperate files 2014-06-14 21:29:57 +03:00
Torsten Ruger
87fa71277a some inlining and renaming 2014-06-14 11:12:53 +03:00
Torsten Ruger
0dbaebf647 fix all tests and a little cleaning 2014-06-14 10:59:25 +03:00
Torsten Ruger
2c26415de7 transformations according to todays post 2014-06-14 00:19:12 +03:00
Torsten Ruger
12a92e4db0 move boot* classes to boot directory 2014-06-13 23:51:53 +03:00
Torsten Ruger
a7551ea8b6 still working on the method dispatch 2014-06-13 23:41:45 +03:00
Torsten Ruger
017d93d929 add to_asm debug output functions 2014-06-12 21:40:25 +03:00
Torsten Ruger
dcd691fe00 minor 2014-06-12 21:27:47 +03:00
Torsten Ruger
6d6c7ddb68 register assignment fix (was not taking subsequent calls into account) 2014-06-12 21:27:30 +03:00
Torsten Ruger
200da192b4 improve output 2014-06-12 21:04:15 +03:00
Torsten Ruger
ea0572c836 fixed while compilation (block order) and fixed and improved fibo 2014-06-12 16:23:57 +03:00
Torsten Ruger
8da1bc4645 fix putint (too eager optimization broke it) 2014-06-12 13:47:06 +03:00
Torsten Ruger
506f98da5a fixed foo and hello, next putint 2014-06-12 09:07:03 +03:00
Torsten Ruger
eef6744827 fixes the if test (regs again) 2014-06-12 08:34:46 +03:00
Torsten Ruger
b125a7c5c7 fix passes, add noop reduction, remove the wretched value operators 2014-06-11 21:36:22 +03:00
Torsten Ruger
4e6319b753 inrtoduce block passes. move the allocation there and implement those simple optimisations 2014-06-11 11:41:50 +03:00
Torsten Ruger
7cca50cd3a still recoving from previous block - function change. no more exceptions at least 2014-06-11 00:38:46 +03:00
Torsten Ruger
e9519d4f05 move the code insertion functionality up to function. makes more sense. block still carries code though 2014-06-10 23:57:56 +03:00
Torsten Ruger
e9fc8ac6aa making the third arg of block init explicit (not optional) 2014-06-10 18:51:27 +03:00
Torsten Ruger
7ca3207b3e moved registers to machine, changed return to 0 (from 7) and erased all integer references to registers 2014-06-10 13:29:01 +03:00
Torsten Ruger
d7a60f2803 new register allocation generates good looking push/pop 2014-06-09 19:24:09 +03:00
Torsten Ruger
b66c4157d5 keep track of used and assigned registers for each block 2014-06-08 01:41:56 +03:00
Torsten Ruger
fbcfa844de renaming and small fixes 2014-06-08 00:56:40 +03:00
Torsten Ruger
e7bb774da0 fix block insert ordering with depth > 1 2014-06-08 00:56:15 +03:00
Torsten Ruger
42a840614e adding call counter and splitting block after call 2014-06-08 00:55:18 +03:00
Torsten Ruger
0a14cffefb fixing fragment tests, most done 2014-06-07 23:22:32 +03:00
Torsten Ruger
6b715bbb1b remoe hash attributes (less magic) and make attributes on context explicit 2014-06-07 22:41:02 +03:00
Torsten Ruger
36f237c633 removed the (too) fancy dsl. Also introduce register indirection 2014-06-07 17:59:44 +03:00
Torsten Ruger
6433a394e7 adding receiver and a register abstraction 2014-06-06 21:49:03 +03:00
Torsten Ruger
c59f22f11f first oo program to compile. But no worries, there is still work left to be done 2014-06-05 18:17:00 +03:00
Torsten Ruger
e6e969b4e4 a spirited effort to make assembly repeatable 2014-06-05 10:46:42 +03:00
Torsten Ruger
41a02a7190 small step to making the assmebly process repeatable (is destructive at the moment) 2014-06-05 10:28:53 +03:00
Torsten Ruger
7cc4c6344c remove the parse code and fix the rest to work with the gem (from git for now) 2014-06-04 22:03:45 +03:00
Nigel Thorne
5145d21e37 Merge branch 'master' of https://github.com/ruby-in-ruby/crystal 2014-06-04 21:49:06 +10:00
Nigel Thorne
20433e3ad2 Change to NigelThorne fork to detect infinite loops
and fixed grammar to ignore missing parameter list.
2014-06-04 21:48:32 +10:00
Torsten Ruger
72d4adc7af another step closer to a working oo system 2014-06-03 22:16:57 +03:00
Torsten Ruger
ca19f5cb16 move to syms for names 2014-06-03 20:47:06 +03:00
Torsten Ruger
b7c2089046 the further down this goes, the smaller the circles. Soon the point will come. And then back out 2014-06-03 14:49:02 +03:00
Torsten Ruger
88a26414eb change the debug output to be more readable 2014-06-02 15:11:48 +03:00
Torsten Ruger
7c1c5431bc add qualification to function definitions 2014-06-02 14:00:30 +03:00
Torsten Ruger
1cff296ab5 small fixes, wown parse for class test 2014-06-02 13:45:08 +03:00
Torsten Ruger
83d4ce55ca fix the load memory instruction 2014-06-01 22:06:59 +03:00
Torsten Ruger
31a55b07ac makes memory a three operand instruction, like add etc. But 3 regs are still undone 2014-06-01 21:20:44 +03:00
Torsten Ruger
08bbad0fdc more on classes, have to work on asm next 2014-06-01 21:03:08 +03:00
Torsten Ruger
1d10c2c03e had forgotten calls on instance variables. corrected + tests 2014-06-01 14:46:16 +03:00
Torsten Ruger
9ea0acf2e3 first oo steps are wobbly, but a string.plus parses 2014-06-01 14:24:54 +03:00
Torsten Ruger
86431120d5 add also calls on classes and more tests for that 2014-05-31 17:58:26 +03:00
Torsten Ruger
4038bd331a clean up block names and export of qualified names makes assembler nicer to read 2014-05-31 17:02:55 +03:00
Torsten Ruger
5756e0b325 move that test to core (cant be done in compiled code) and focus on string addition instead 2014-05-31 16:43:03 +03:00
Torsten Ruger
cdfc1ac891 kernel functions are not fixed to be Object functions 2014-05-31 16:19:44 +03:00
Torsten Ruger
a6f02d6be3 let the BootClasses carry functions, ie one level squeezed between object_space and funtion, the class is coming to life 2014-05-31 14:35:33 +03:00
Torsten Ruger
3713d08748 renamed program to boot_space, as in object_space at boot time. thats the way its going 2014-05-31 12:52:29 +03:00
Torsten Ruger
c9c484f353 change program to inherit stright from code, not block (as it keeps the funcitons anyway) 2014-05-31 12:38:15 +03:00
Torsten Ruger
3156887a81 add instance variables and module name as basic types (as name was there already) and add tests 2014-05-30 14:25:08 +03:00
Torsten Ruger
806960a4d6 fixing module and class rules to actually use module names. fix all tests 2014-05-30 12:17:11 +03:00
Torsten Ruger
f03d445f3d add module names and instance variables as parse rules 2014-05-30 12:06:42 +03:00
Torsten Ruger
3e93517986 adds class definition with tests 2014-05-30 10:59:49 +03:00
Torsten Ruger
e7a823bf3e renamed module_def too module_definition and fixed leading space tests 2014-05-30 10:42:43 +03:00
Torsten Ruger
caec5ee6f0 add module to root parse and tests 2014-05-30 10:31:25 +03:00
Torsten Ruger
c69a44f316 define modules and tests, no compiling 2014-05-29 15:57:33 +03:00
Torsten Ruger
25cd80c76b small fix to return gets recursive fibonacchi to work 2014-05-28 20:13:03 +03:00
Torsten Ruger
4186c9cafe add <= operator for fibo 2014-05-28 20:10:16 +03:00
Torsten Ruger
5c0f62ebb9 upgrade calls with operator argument and chaining. Almost feels like cheating, too easy 2014-05-28 15:22:37 +03:00
Torsten Ruger
0f118c591d fix return compilation and use it on the while fibo. worked immediately :-) 2014-05-28 15:03:54 +03:00
Torsten Ruger
5a415aed92 fix fragment tests to actually execute on the pi and check the output 2014-05-28 14:55:13 +03:00
Torsten Ruger
e9720c4c54 padding with space not zero 2014-05-28 14:27:37 +03:00
Torsten Ruger
07ef170db0 padding with space not zero 2014-05-28 14:26:24 +03:00
Torsten Ruger
6bfe643032 add some return test to functions 2014-05-27 16:51:37 +03:00
Torsten Ruger
fbaf292bb6 add a simple return, ie the normal kind, not with trailing statements 2014-05-27 16:33:24 +03:00
Torsten Ruger
21a53c6a7f fix the compound type parser tests 2014-05-27 15:41:34 +03:00
Torsten Ruger
0b07e77782 fix the spurious root expression and add conmound types back (thanks to kasper for fixing that) 2014-05-27 15:36:51 +03:00
Torsten Ruger
1f17262887 fix the handcoded fibonacci (registers again) 2014-05-25 13:34:06 +03:00
Torsten Ruger
5afa6f4239 move the if logic around (execute false first) and fix the parameters passing 2014-05-25 11:35:45 +03:00
Torsten Ruger
5a5b016a7e use crystal calling convention, documented in readme 2014-05-25 10:57:56 +03:00
Torsten Ruger
6ac92cac3a working on registers, awip (a work in progress) 2014-05-25 08:43:07 +03:00
Torsten Ruger
1e326e00b9 fix tests after register allocation work 2014-05-24 16:52:54 +03:00
Torsten Ruger
4a67504a61 remove parslet, bundling now 2014-05-24 14:51:50 +03:00
Torsten Ruger
61a60abd08 ridiculously easy to implement the if now 2014-05-24 10:41:57 +03:00
Torsten Ruger
00d85156da rename conditional to if expression 2014-05-24 10:18:54 +03:00
Torsten Ruger
2c90006697 that fixes the while. To work. Actually work. Fibonacci and all :-) 2014-05-23 20:27:14 +03:00
Torsten Ruger
86e73bf1ba save and restore the right registers 2014-05-22 21:55:17 +03:00
Torsten Ruger
4f0b769e82 get conditions to work for while 2014-05-22 21:38:57 +03:00
Torsten Ruger
7c2d149106 solves control flow issue when adding blocks 2014-05-22 16:35:59 +03:00
Torsten Ruger
8596fb312d while coded 2014-05-22 14:56:31 +03:00
Torsten Ruger
ccf88319e0 gives function the list of blocks it needs for branching and documents also the blocks better 2014-05-22 14:18:22 +03:00
Torsten Ruger
cf87c5323d using the next field of blocks for a consecutive code line 2014-05-22 13:59:47 +03:00
Torsten Ruger
e3bccaa0fe thats putstring working again (better testing == better code => better sleep, longer life :-) 2014-05-21 21:27:05 +03:00
Torsten Ruger
587fd56300 remove a layer of indirection 2014-05-21 21:15:23 +03:00
Torsten Ruger
bc278a61eb using function args for call 2014-05-21 21:12:46 +03:00
Torsten Ruger
65cde70114 add space at file end 2014-05-21 21:08:15 +03:00
Torsten Ruger
46102e56ad rename c to register machine 2014-05-21 19:43:46 +03:00
Torsten Ruger
937f566b27 value is not derived from code (was too much generalisation/confusing) 2014-05-21 19:41:51 +03:00
Torsten Ruger
067cde8d43 remove remnant of old dsl 2014-05-21 19:34:58 +03:00
Torsten Ruger
c36a08d52d small fixes 2014-05-21 19:33:58 +03:00
Torsten Ruger
b281c24a39 move towards locals (not hardcoding registers) 2014-05-21 19:27:27 +03:00
Torsten Ruger
570b6db659 start using locals 2014-05-21 19:06:21 +03:00
Torsten Ruger
847a486288 fix from assign 2014-05-21 19:06:06 +03:00
Torsten Ruger
c701eb9f5b outputting hex for better comparison with objdump 2014-05-21 19:04:48 +03:00
Torsten Ruger
127ce5a5d9 outputting entries to get jumps rights 2014-05-21 19:04:16 +03:00
Torsten Ruger
2df2dcc528 function now returns locals, not free registers 2014-05-21 16:42:36 +03:00
Torsten Ruger
e1f889fd10 fix fibo with new syntax. certainly works for operators, but not everything 2014-05-21 12:47:40 +03:00
Torsten Ruger
16a07d5aa2 fixed method_missing to check whether local var exists (not gobble everything up) 2014-05-21 12:44:36 +03:00
Torsten Ruger
53cfeb72a4 fix test and remove hack for - 2014-05-21 12:42:54 +03:00
Torsten Ruger
9d873d3cba implement string loading and convert hello test 2014-05-20 19:21:29 +03:00
Torsten Ruger
c7a2ce5af9 phase 2, add/sub instructions work with +- operator 2014-05-20 11:54:59 +03:00
Torsten Ruger
c3c6928dc8 phase one, assignment for constants (moves) work 2014-05-20 11:14:18 +03:00
Torsten Ruger
7056f6f05c first step of assignment magic 2014-05-20 11:03:18 +03:00
Torsten Ruger
fcf76eed34 better testing for small assembly (for coming changes) 2014-05-20 10:29:08 +03:00
Torsten Ruger
0fa47d204e minor 2014-05-20 10:28:34 +03:00
Torsten Ruger
f34fddd383 minor 2014-05-19 21:28:18 +03:00
Torsten Ruger
fe1414f383 adds hand coded fibo, works 2014-05-19 17:32:41 +03:00
Torsten Ruger
285988f173 putint works, work on syntax goes on 2014-05-19 15:44:12 +03:00
Torsten Ruger
76ce9aa654 improve argument handling for puntint 2014-05-19 12:18:01 +03:00
Torsten Ruger
8ba79d8de8 fibinacci actually compiles, doesnt mean it works though 2014-05-19 11:29:18 +03:00
Torsten Ruger
c56b7cdf09 minor 2014-05-19 11:28:37 +03:00
Torsten Ruger
59952f8503 more work on instruction format 2014-05-19 11:28:13 +03:00
Torsten Ruger
76f1537174 fix some arguemnt names 2014-05-18 12:34:53 +03:00
Torsten Ruger
9fc8bfbb55 fixin up mov arguments 2014-05-18 12:30:49 +03:00
Torsten Ruger
2be96dccdc fix logic instruction arguments 2014-05-18 12:18:57 +03:00
Torsten Ruger
6abd10f278 started naming instruction arguments properly, starting with compare 2014-05-18 11:11:26 +03:00
Torsten Ruger
f65ad813af move first arg into derived intruction constructor 2014-05-18 10:27:35 +03:00
Torsten Ruger
a35bba39bc merge logichelper into last class that uses it 2014-05-18 10:24:14 +03:00
Torsten Ruger
7b1b2c5d87 aliased add_code to <<, to give a bit of the stream feel 2014-05-18 10:15:43 +03:00
Torsten Ruger
53666e8b33 bit of evaling 2014-05-16 23:33:25 +03:00
Torsten Ruger
a08661955f a bit of cleanup and the good news is, we can output a (small) number 2014-05-16 23:24:19 +03:00
Torsten Ruger
fee82643e5 strangely the coredumps stopped. sure didnt feel like they would 2014-05-16 23:08:45 +03:00
Torsten Ruger
7e2210f772 renaming update_status_flag to just update_status 2014-05-16 19:56:13 +03:00
Torsten Ruger
b3f7b66ceb coding the weird udiv10 and utoa 2014-05-16 19:55:46 +03:00
Torsten Ruger
823c11a381 more work on instrucitons, mov this time 2014-05-16 17:31:01 +03:00
Torsten Ruger
4030f32ead finally coded the logic Shifting (what a beast) 2014-05-16 12:55:51 +03:00
Torsten Ruger
87e0f297e3 rename extra to right in logic inst 2014-05-16 11:27:30 +03:00
Torsten Ruger
ccafb09224 rename first hash argument from right to left in logic inst 2014-05-16 10:54:56 +03:00
Torsten Ruger
ef17bbf9dd rename left to first in instruction and started on logic instruction cleanup 2014-05-16 10:42:25 +03:00
Torsten Ruger
009c0895f4 change right syntax to 1.9 style, looks a little nicer 2014-05-15 21:35:45 +03:00
Torsten Ruger
a0f0d08e81 named the first intruction constructor argument 2014-05-15 19:41:51 +03:00
Torsten Ruger
b4c79d218f work on Integer.to_s , not a simple task as it turns out 2014-05-15 16:54:23 +03:00
Torsten Ruger
c9ffb78e82 allowing comments instead of newlines and not capturing comments (leave that for later as it messes the output) 2014-05-14 22:19:20 +03:00
Torsten Ruger
3912e0cd31 fix register issues, some typos 2014-05-14 22:04:03 +03:00
Torsten Ruger
e10f4863ee exporting labels to elf for (a lot) better readability 2014-05-14 16:15:47 +03:00
Torsten Ruger
d8d536aa2c while assembles, now for some nice assmbler reading 2014-05-14 12:54:23 +03:00
Torsten Ruger
a5b4f3d9ad remove NumLiteral, replace with IntegerConstant 2014-05-14 12:08:06 +03:00
Torsten Ruger
d6b5d46165 while compiles. jo 2014-05-14 12:02:54 +03:00
Torsten Ruger
d50c38f5ad add more functionality to get while to work (not there yet) 2014-05-14 11:33:23 +03:00
Torsten Ruger
2230a4f25e clean up intruction instantiation and fix tests 2014-05-14 10:47:30 +03:00
Torsten Ruger
46ea1df51e rename function_call to call_site in all levels to avoid confusion 2014-05-13 21:15:02 +03:00
Torsten Ruger
04af367bc0 coming together, more and more each day 2014-05-13 21:06:12 +03:00
Torsten Ruger
f6711ea49c checkpointing on the mad road to register allocation 2014-05-13 18:21:24 +03:00
Torsten Ruger
b0302948dd rename machine to c_machine 2014-05-13 17:06:42 +03:00
Torsten Ruger
d7f31e7f39 introduce constant class and add block to compile signature(wip, work in progress) 2014-05-13 16:24:19 +03:00
Torsten Ruger
dd05b30230 ads to_s to ast for better readability 2014-05-13 10:49:26 +03:00
Torsten Ruger
cd67589f3e life must go on, compunds must go (for now) 2014-05-13 08:35:49 +03:00
Torsten Ruger
72de0089b2 small renames 2014-05-13 08:24:55 +03:00
Torsten Ruger
ff612446be using hash_key and value rules 2014-05-12 21:44:51 +03:00
Torsten Ruger
fdb5dd4f67 a good stab at array anf hash constants 2014-05-12 21:36:38 +03:00
Torsten Ruger
25a7c3ea68 fixed fibonacci example 2014-05-12 14:24:36 +03:00
Torsten Ruger
1170b0798b make condition brackets optional 2014-05-12 13:57:24 +03:00
Torsten Ruger
956d1eb135 newline fiddling in the parser yields goods results 2014-05-12 13:47:47 +03:00
Torsten Ruger
ee4d8033af redid while with brackets and just one condition expression 2014-05-12 12:26:38 +03:00
Torsten Ruger
e2fb0a5f34 rename conditional to control in parser 2014-05-12 12:20:31 +03:00
Torsten Ruger
7940efc64d still trying that while loop. Check as everything else works 2014-05-12 12:14:04 +03:00
Torsten Ruger
cc5915135a add lots of operators. Assignment becomes operator. fix the mess 2014-05-11 18:37:26 +03:00
Torsten Ruger
b4af123c9e operator docs 2014-05-11 17:05:21 +03:00
Torsten Ruger
be4825579d finally remove kaspers example from which the oprerator stuff is copied 2014-05-10 21:43:03 +03:00
Torsten Ruger
2d389d2e00 adds basic math operators, thanks to kasper associative and prioritised 2014-05-10 21:41:46 +03:00
Torsten Ruger
6378209f33 leave assignee as name_expression in assignment, fix tests accordingly 2014-05-10 19:11:32 +03:00
Torsten Ruger
47f1608685 start to add while loop 2014-05-10 19:02:51 +03:00
Torsten Ruger
e600911fe8 adds variable, something compliles , but... 2014-05-10 17:55:02 +03:00
Torsten Ruger
5b002c0ff6 little more attribute filing 2014-05-10 16:08:53 +03:00
Torsten Ruger
9e5b60dfab moving many attributes into the attributes hash, but not nearly all 2014-05-10 15:59:46 +03:00
Torsten Ruger
8faf0ba17f phase 1- get rid of the pesty args in structions 2014-05-10 15:47:27 +03:00
Torsten Ruger
3f88fe15b4 some reagganging on my way to retire logic_helper 2014-05-10 15:34:05 +03:00
Torsten Ruger
cba171cc7d remove the old asm (that is now arm) 2014-05-10 15:27:10 +03:00
Torsten Ruger
79a28ac5fa trying to get function calls to work (but will have to rework regeister handling) 2014-05-10 15:24:56 +03:00
Torsten Ruger
e69decee90 slight shuffling 2014-05-10 12:54:31 +03:00
Torsten Ruger
20128627c7 implements inspect for copy paste into tests 2014-05-10 12:54:10 +03:00
Torsten Ruger
051b0ea7dc remove the double transform rules (as not using maybe anymore) 2014-05-10 12:02:11 +03:00
Torsten Ruger
8f2a22d12f add a repeat to the root parser rule (need to test the root more) 2014-05-10 11:18:39 +03:00
Torsten Ruger
b266bb84ba splitting the parser up more 2014-05-10 11:14:34 +03:00
Torsten Ruger
af1df1a104 renamed root parser class to Crystal 2014-05-10 11:03:23 +03:00
Torsten Ruger
31aa9c8768 actually ads a value to Value 2014-05-10 10:59:56 +03:00
Torsten Ruger
7341586d15 more expressions compile 2014-05-10 10:58:25 +03:00
Torsten Ruger
8e6297dcff improving the string according to kasper 2014-05-09 13:51:47 +03:00
Torsten Ruger
6ee290e0bb fixes all existing parser tests 2014-05-08 21:09:07 +03:00
Torsten Ruger
53a8efaa59 get the conditionals to work again 2014-05-08 19:49:15 +03:00
Torsten Ruger
b82c2241b7 get parameter lists to work again (no more ifs as function arguments:-) 2014-05-08 19:41:27 +03:00
Torsten Ruger
9c609ee299 make machine init default to the running one with ruby config 2014-05-08 19:30:46 +03:00
Torsten Ruger
9c2dfe79da at least basic tests work again 2014-05-08 18:42:24 +03:00
Torsten Ruger
034ae4f7ca add comment and remove newline from space (starting a long whitespace battle) 2014-05-08 18:38:49 +03:00
Torsten Ruger
f0ad11bf8c resistance was useless, wilson is now part of the collective (as intel) 2014-05-08 15:09:56 +03:00
Torsten Ruger
f7f0eee31a adjust program tests to new syntax, hello world works there too -) 2014-05-08 14:14:15 +03:00
Torsten Ruger
ee864fc602 fixed arm tests to use ArmMachine 2014-05-07 14:58:38 +03:00
Torsten Ruger
4135c4d2dc crystal says Hello. 2014-05-06 21:36:28 +03:00
Torsten Ruger
fa123e0354 move kernel to core and apply the classmethod pattern to all core classes 2014-05-06 12:47:07 +03:00
Torsten Ruger
12b6800efe work on function entry and exit. fix stack instructions 2014-05-06 12:42:43 +03:00
Torsten Ruger
22b5117c8b getting a _start and _exit, just missing the actual code 2014-05-06 00:12:04 +03:00
Torsten Ruger
7d20b5e2df at least its in shape to start debugging again (that must count as half full) 2014-05-05 22:21:11 +03:00
Torsten Ruger
69b04d930f cleanup 2014-05-05 15:59:29 +03:00
Torsten Ruger
de66238a9e moved all compile to ast, vm does link and assemble. Getting there 2014-05-05 11:03:43 +03:00
Torsten Ruger
99da6f5be3 gets rid of conversion approach, ast compiles 2014-05-05 10:13:49 +03:00
Torsten Ruger
c67ee7f6f3 extracted ast classes to own files 2014-05-05 10:02:02 +03:00
Torsten Ruger
7c7e58ea62 upgrades ast to first class 2014-05-05 09:51:16 +03:00
Torsten Ruger
7c0aa8ae7d getting better, but somethings off 2014-05-05 09:35:40 +03:00
Torsten Ruger
a61170942f so close i can smell it, checkpoint 2014-05-03 22:18:04 +03:00
Torsten Ruger
968556a03e get the tests to work 2014-05-03 18:56:56 +03:00
Torsten Ruger
04e4dc872e check 2014-05-03 18:51:47 +03:00
Torsten Ruger
845a8cab8b more semi random code, a checkpoint 2014-05-03 15:13:44 +03:00
Torsten Ruger
1c86ecb84e copied asm here so that stays working while i break (an) arm 2014-05-03 15:13:15 +03:00
Torsten Ruger
fae0c1ab8c renamed program to assembler (to avoid clashes in vm) 2014-05-02 08:14:38 +03:00
Torsten Ruger
990b4726ba more random code 2014-05-02 08:02:25 +03:00
Torsten Ruger
90e2658bc0 small poslish 2014-04-29 16:22:12 +03:00
Torsten Ruger
7dfde45373 fixes missing string tests and expression/transformation 2014-04-29 11:17:19 +03:00
Torsten Ruger
874f080ba2 Semi random code for the next step 2014-04-28 22:08:09 +03:00
Torsten Ruger
129f9f5c57 space and order fiddling (gets assignments to work better) 2014-04-28 22:07:13 +03:00
Torsten Ruger
92a9372dcc moved nodes to parser (one more layer) and fixed tests. also adds assignment 2014-04-28 21:21:12 +03:00
Torsten Ruger
cfcb9ded2f fixed and tightened transformation tests, also by implementing node == 2014-04-28 16:07:34 +03:00
Torsten Ruger
e04973fc3c making grammar look more like ruby 2014-04-28 15:46:57 +03:00
Torsten Ruger
18c2abfd2b some docs 2014-04-27 21:51:06 +03:00
Torsten Ruger
74060d6ab6 expanded many rule names, added some tests to find the bugs introduced 2014-04-27 21:41:38 +03:00
Torsten Ruger
408cf98ea5 renamed parser rules for clarity. fixed 2014-04-27 21:12:42 +03:00
Torsten Ruger
583e6f0c9f add keyword and operators as seperate parser modules 2014-04-27 21:12:24 +03:00
Torsten Ruger
28410ab22a adjusted code and tests to use renamed and rearranged parser bits 2014-04-27 18:13:34 +03:00
Torsten Ruger
032758db8b using new modules 2014-04-27 18:13:10 +03:00
Torsten Ruger
d8f228da11 more basic types (untested) 2014-04-27 18:12:32 +03:00
Torsten Ruger
4e4099e552 adds tokens as own parser module 2014-04-27 18:12:04 +03:00
Torsten Ruger
f628c67188 starting to deompose the parser 2014-04-27 16:30:32 +03:00
Torsten Ruger
d72c9a3bb0 fixed tests (namespacing) and finally created a test_all 2014-04-27 15:44:34 +03:00
Torsten Ruger
436a5dac5a created own directory for parser 2014-04-27 15:38:07 +03:00
Torsten Ruger
b1203363d4 vendored parslet, deemed stable enough and better without dependency 2014-04-27 15:34:35 +03:00
Torsten Ruger
6fafeda66d block dsl facelift 2014-04-27 15:19:48 +03:00
Torsten Ruger
88ed97ac3b fix the tests with new block syntax 2014-04-25 21:08:19 +03:00
Torsten Ruger
92beb638de better logic with new block class 2014-04-25 18:37:19 +03:00