msp430-repl/src
John Breaux 417ef03e41 0.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 UI

TODO:
- REPL mode is only partially compatible with .define directive
- Branching to a label will branch to the data AT the label,
  not the label itself. I doubt this is correct behavior.
  - In case br <label> is meant to use the absolute address,
    I've created a .org directive (currently unimplemented)
    for specifying the load address of the program.
2023-09-05 01:54:50 -05:00
..
assembler 0.2.0: Feature update and Refactor 2023-09-05 01:54:50 -05:00
bin/msp430-asm 0.2.0: Feature update and Refactor 2023-09-05 01:54:50 -05:00
lexer 0.2.0: Feature update and Refactor 2023-09-05 01:54:50 -05:00
parser 0.2.0: Feature update and Refactor 2023-09-05 01:54:50 -05:00
assembler.rs 0.2.0: Feature update and Refactor 2023-09-05 01:54:50 -05:00
error.rs 0.2.0: Feature update and Refactor 2023-09-05 01:54:50 -05:00
hash.rs 0.2.0: Feature update and Refactor 2023-09-05 01:54:50 -05:00
lexer.rs 0.2.0: Feature update and Refactor 2023-09-05 01:54:50 -05:00
lib.rs 0.2.0: Feature update and Refactor 2023-09-05 01:54:50 -05:00
parser.rs 0.2.0: Feature update and Refactor 2023-09-05 01:54:50 -05:00