Commit Graph
81 Commits
Author SHA1 Message Date
Bob Nystrom 32144dae20 Clean up compiler a bunch. 2013-11-19 20:54:47 -08:00
Bob Nystrom 32d41e2d54 Simplify lexer a bit. 2013-11-19 20:19:02 -08:00
Bob Nystrom fe48113054 Logical "||" operator. 2013-11-19 18:24:58 -08:00
Bob Nystrom 4266facfda Add IS_FALSE for non-NaN-tag values. 2013-11-19 07:36:59 -08:00
Bob Nystrom 6b87a8400f "&&" operator. 2013-11-19 07:35:25 -08:00
Bob Nystrom e614e092ed Start getting block scope working. 2013-11-18 09:19:03 -08:00
Bob Nystrom 4d23d58bf1 While statements. 2013-11-17 22:38:59 -08:00
Bob Nystrom 64509a4f61 NaN tagging!
This plus moving some variables into locals in the interpreter loop
gets the fib benchmark within 25% of Lua!
2013-11-17 14:20:15 -08:00
Bob Nystrom 0c1ce91e80 Make String#contains return a bool. 2013-11-17 10:04:02 -08:00
Bob Nystrom 0181f69dfb Get rid of special handling for call methods. 2013-11-17 09:02:57 -08:00
Bob Nystrom ee504435f7 Real hello world example. 2013-11-17 08:55:04 -08:00
Bob Nystrom bc5415e486 Move value/object stuff to separate files. 2013-11-16 17:51:30 -08:00
Bob Nystrom 37fdf88bbe Clean up a bunch of stuff. 2013-11-16 17:41:09 -08:00
Bob Nystrom 2af4cb6169 Get rid of "no value" value type. 2013-11-16 11:54:42 -08:00
Bob Nystrom 8f6f546ab3 Bump default heap size. 2013-11-16 11:43:40 -08:00
Bob Nystrom 462ea3903a Unboxed numbers. 2013-11-16 11:41:29 -08:00
Bob Nystrom e6f085b7c4 Get rid of boxed null and bools. 2013-11-16 11:35:59 -08:00
Bob Nystrom 01b61c83d7 First phase of changing object representation.
This code is full of hacks and isn't the right representation, but
it gets it so that Value is no longer just a raw Obj*.
2013-11-16 11:26:32 -08:00
Bob Nystrom 1266578a4e Add trivial fib benchmark. 2013-11-14 20:57:56 -08:00
Bob Nystrom cfb5193ce8 Function parameters. 2013-11-14 18:25:28 -08:00
Bob Nystrom 167e174480 User-defined operators. 2013-11-14 10:59:28 -08:00
Bob Nystrom f6eadbe3f4 Get rid of mixfix methods (for now at least). 2013-11-14 09:21:58 -08:00
Bob Nystrom a24f29002d Better parsing error messages. 2013-11-13 23:06:53 -08:00
Bob Nystrom 5ac4087d0c Some design notes. 2013-11-13 17:09:55 -08:00
Bob Nystrom 85d9bffa08 Block comments. 2013-11-13 17:09:47 -08:00
Bob Nystrom 27a652e565 Start sketching out inheritance. 2013-11-13 11:05:03 -08:00
Bob Nystrom 509f62fdad Ditch man file. 2013-11-13 07:15:10 -08:00
Bob Nystrom 9d4599f6e6 Unary operators and variable assignment. 2013-11-13 07:10:52 -08:00
Bob Nystrom 7e2c200e0d Garbage collection! 2013-11-12 08:32:35 -08:00
Bob Nystrom 0339bcdeca Use object conversion macros consistently. 2013-11-10 14:21:14 -08:00
Bob Nystrom 915ecb4e58 Static methods. 2013-11-10 11:46:13 -08:00
Bob Nystrom 2f241e2225 Metrics for tests. 2013-11-10 11:12:38 -08:00
Bob Nystrom f19dd64f8b Floating point number literals. 2013-11-09 21:32:57 -08:00
Bob Nystrom 3cdabcb8c7 "%" operator for numbers. 2013-11-09 21:01:18 -08:00
Bob Nystrom a1f10786ef "this" expressions. 2013-11-09 15:42:23 -08:00
Bob Nystrom 0cc5524249 Generate correct code for locals. 2013-11-09 11:38:01 -08:00
Bob Nystrom a2f0e41bcb Method parameters. 2013-11-09 11:18:27 -08:00
Bob Nystrom 166d74930f "is" operator. 2013-11-07 17:07:32 -08:00
Bob Nystrom 55e433f980 Reorganize the compiler to be bottom-up.
Gets rid of a bunch of forward declarations and shortens the code.
Also makes points of recursion more explicit.
2013-11-07 07:04:25 -08:00
Bob Nystrom 8f6881c6a8 Change syntax for blocks -> fns. 2013-11-06 07:47:47 -08:00
Bob Nystrom c0c6020292 "block" -> "function".
Moving away from using Smalltalk-style block objects for all scopes.
2013-11-06 06:52:28 -08:00
Bob Nystrom 4ff444b1ab Unskip some working tests. 2013-11-05 20:38:16 -08:00
Bob Nystrom 2e6888364d "null" literal. 2013-11-05 18:22:22 -08:00
Bob Nystrom 3db228eecf Start hacking on "if" expressions. 2013-11-05 15:40:21 -08:00
Bob Nystrom 67356df1f9 "==" and "!=" operators. 2013-11-05 09:57:57 -08:00
Bob Nystrom c331ce5301 Tweak metrics script. 2013-11-05 07:57:18 -08:00
Bob Nystrom 6000177126 Clean up block and method calling. 2013-11-05 07:56:59 -08:00
Bob Nystrom dff19bd8c3 Booleans and comparison operators on numbers. 2013-11-03 21:38:58 -08:00
Bob Nystrom dae0246581 Pratt parsing FTW! 2013-11-03 10:16:14 -08:00
Bob Nystrom 1741bb2693 ".toString" on num and string. 2013-11-01 23:27:28 -07:00
Bob Nystrom cfa65a6536 Don't require a newline at the end of a file. 2013-11-01 06:57:21 -07:00
Bob Nystrom 70f6d61cca Start hacking in a REPL. 2013-10-31 22:25:00 -07:00
Bob Nystrom 4f4f630fec Simple script for code metrics. 2013-10-31 21:54:04 -07:00
Bob Nystrom 46c0fe87e6 Parentheses for grouping. 2013-10-31 21:49:15 -07:00
Bob Nystrom 8e6ce2bb2a Clean up file reading. 2013-10-31 14:39:41 -07:00
Bob Nystrom 64f1b39ee9 Get infix arithmetic operators working. 2013-10-31 07:04:44 -07:00
Bob Nystrom 3f433922eb Reorganize object types. Sort alphabetically. 2013-10-28 07:17:36 -07:00
Bob Nystrom 9208a7f862 Start testing errors.
- Add support to test runner for compile errors.
- Include line number in tokens.
- Exit with non-zero on compile error.
2013-10-28 07:12:39 -07:00
Bob Nystrom db14c531b8 More tests for primitives. 2013-10-28 06:53:51 -07:00
Bob Nystrom f5d9908346 String literal tests. 2013-10-28 06:45:19 -07:00
Bob Nystrom 95fb0863d9 Add IO class.
With io.write(), can start writing tests now.
2013-10-27 22:45:40 -07:00
Bob Nystrom ca445412b8 Reorganize compiler code a bit. 2013-10-27 21:59:14 -07:00
Bob Nystrom 6ce2c7cec5 Move primitives to separate file. 2013-10-27 11:28:15 -07:00
Bob Nystrom c7e11059f4 Allow multi-part method calls.
Also correctly mangle names with arguments and parts.
2013-10-27 11:20:19 -07:00
Bob Nystrom b9baf46e9a Argument lists. 2013-10-26 16:01:44 -07:00
Bob Nystrom d9a4da94a3 "count" method on strings. 2013-10-26 14:34:15 -07:00
Bob Nystrom f867bb8348 String literals and objects. 2013-10-25 20:40:24 -07:00
Bob Nystrom 8afaa51e92 Global variables. 2013-10-25 20:32:42 -07:00
Bob Nystrom b7de165950 Line comments. 2013-10-25 20:07:04 -07:00
Bob Nystrom 32f8c412c7 Method calls. 2013-10-24 21:32:17 -07:00
Bob Nystrom 2f930f727e Make blocks callable. 2013-10-24 13:01:24 -07:00
Bob Nystrom 911f586e7b Block objects.
Also clean up newline handling in parser.
2013-10-24 12:39:01 -07:00
Bob Nystrom 67e5660346 Start working on class definitions. 2013-10-23 22:50:04 -07:00
Bob Nystrom 40e6d2f077 Local variables. 2013-10-23 15:32:59 -07:00
Bob Nystrom 3da1cbe2fa Pure recursive descent parser.
Also, start hacking on method calls.
2013-10-23 13:51:41 -07:00
Bob Nystrom 7c0ab503f6 Get rid of "if" and "else" tokens. 2013-10-22 13:38:57 -07:00
Bob Nystrom b1867f054a Actually parse number literal. 2013-10-22 13:37:53 -07:00
Bob Nystrom 0b1c42a818 Don't heap allocate tokens. 2013-10-22 13:25:39 -07:00
Bob Nystrom dd8998db24 Start sketching out single-pass compiler. 2013-10-22 12:16:39 -07:00
Bob Nystrom d26c38abb1 Make indentation consistent. 2013-10-22 11:23:51 -07:00
Bob Nystrom 2f6a6889f1 Initial commit. 2013-10-22 11:22:22 -07:00