20 Commits

Author SHA1 Message Date
75e326e343 Add Result + Err to lexer 2022-02-02 21:59:46 +01:00
2a04a28f97 Implement String Literals
- String literals can be stored in variables, but are fully immutable
  and are not compatible with any operators
2022-02-02 19:38:28 +01:00
2946e67349 Implement logical not 2022-02-02 19:14:11 +01:00
dd6129bb00 Implement logical and / or 2022-02-02 18:56:45 +01:00
771a858da3 Move ast into separate file 2022-02-02 16:43:14 +01:00
64bd2341b8 Refactor interpreter to use borrowed Ast
- Should have been like this from the start
- About 9x performance increase
2022-02-02 16:24:42 +01:00
9a7de0a1c6 Implement if 2022-02-02 16:19:46 +01:00
99e462f4b5 Implement print keyword 2022-02-02 14:05:58 +01:00
c4f5b89456 Implement loop keyword
- Loop is a combination of `while` and `for`
- `loop cond { }` acts exactly like `while`
- `loop cond; advance { }` acts like `for` without init
2022-01-31 16:58:46 +01:00
c49a5ec0e2 Implement simple CLI
- Implement running files
- Implement interactive mode
- Enable printing tokens & ast with flags
2022-01-31 16:24:25 +01:00
2ea2aa5203 Implement multi statement code
- Add statements
- Add mandatory semicolons after statements
2022-01-29 23:18:15 +01:00
14e8a0b507 Implement variables
- Assignment
- Declaration
- Identifier lexing
2022-01-29 22:49:15 +01:00
e80cae11c9 Implement relational binops 2022-01-29 21:48:55 +01:00
88ceacd500 Implement comparison binops 2022-01-29 21:37:44 +01:00
1079eb1671 Implement bitwise not 2022-01-29 21:26:14 +01:00
fabe3ef2ad Implement unary negate 2022-01-29 21:12:01 +01:00
6b91264f84 Implement more operators
- Mod
- Bitwise Or
- Bitwise And
- Bitwise Xor
- Shift Left
- Shift Right
2022-01-27 23:15:16 +01:00
d9246c7ea1 Implement div & sub 2022-01-27 22:29:06 +01:00
7a69efc240 Add test for interpreter 2022-01-02 22:02:31 +01:00
39dd5e81f2 Start implementing interpreter
- Implemented tree-walk-interpreter for expressions only
- Binops Add, Mul
- Value Types I64
2022-01-02 21:58:10 +01:00