860c9d4a97parser: Refactor Parsable to align with assembler::AssembleJohn Breaux2024-01-31 17:59:31 -0600
af89541af1lexer: Fix copy+paste error in greater. Now emits Rsh tokens~!John Breaux2024-01-31 17:58:26 -0600
6b5663ae4emsp430-asm: Remove ANES as a dependency - ANSI escape codes are stupid simple, and really don't warrant an external dependencyJohn Breaux2024-01-31 13:48:16 -0600
5a77985b39lexer: Fix bug that did not check the second character of identifiers. This also fixes one-character identifiers not being properly detected.John Breaux2024-01-31 13:47:18 -0600
b31295ad21Add one of my old Microcorruption solutions as an example - TODO: allow embedding unicode characters as numerics in expressionsJohn Breaux2024-01-30 05:40:49 -0600
fc8f8b9622v0.3.0: Total overhaul - Everything has been rewritten - Modularity is improved somewhat - No dependency injection in preprocessor/parser, though - There are now early and late constant evaluation engines - This engine allows for by-value access to already-assembled code - Performs basic math operations, remainder, bitwise logic, bit shifts, negation, and bit inversion - Also allows for indexing into already-generated code using pointer-arithmetic syntax: *(&main + 10). This is subject to change? It's clunky, and only allows word-aligned access. However, this rewrite is taking far too long, so I'll call the bikeshedding here. - Pretty sure this constant evaluation is computationally equivalent to Deadfish?John Breaux2024-01-30 05:27:12 -0600
417ef03e410.2.0: Feature update and Refactor - Each major module (lexer, parser, assembler) has its own error type - These error types are somewhat interconnected, but their dependency relationships are one-way and well defined - The AST is no longer responsible for assembling itself - The Assembler (assembler::Assembler) will now visit every AST node and accumulate words - Words are assumed to be little-endian. - There are now a set of assembler directives that affect the generated output: - .word <Number>: inserts a single word in the output - .words [<Number>,*]: inserts multiple words in the output - .byte <Number>: Alias for .word - .bytes [<Number>,*]: Alias for .words - .string "String": inserts a null-terminated UTF-8 encoded string - .strings ["String",*]: "" multiple strings - Data is always word-aligned at the moment. - There are now assembler directives that affect the AST during parsing: - .include "path/to/file": Parses the contents of a file directly into the AST - Included files have their own defines, but *share* labels. This is because .defines are a tokenizer construct, and including a file creates a new buffer and tokenizer. - Circular includes are NOT checked for at the moment. It is very easy to exhaust the stack. - General cleanup of several functions, comments, TODOs, etc. - main.rs was moved to make room for upcoming improvements to the UIJohn Breaux2023-09-05 01:54:50 -0500