thp/CHANGELOG.md

193 lines
5.3 KiB
Markdown
Raw Normal View History

2023-01-23 14:31:49 +00:00
# Changelog
## TODO
- Test correct operator precedence
2024-05-30 21:05:31 +00:00
- Implement functions as first class citizens
2023-12-10 01:04:44 +00:00
- Parse __more__ binary operators
2023-09-20 01:42:03 +00:00
- Parse more complex bindings
2023-04-16 23:17:28 +00:00
- Namespace identifiers in the symbol table
- Stdlib
- Document code
2023-12-10 01:04:44 +00:00
- Watch mode
- Simple language server
- Decide how to handle comments in the syntax (?)(should comments mean something like in rust?)
2024-05-30 21:05:31 +00:00
- Abstract the parsing of datatypes, such that in the future generics can be implemented in a single place
- Begin work on the code formatter
2024-08-13 20:19:18 +00:00
- Remove all panic! and todo!
- Change REPL to execute code only after `;;` is found
- Forward the code generated by the REPL to the PHP repl
## v0.1.3
- [ ] Test semantic analysis
- [ ] Generate php code from current AST
2024-08-27 21:09:12 +00:00
## v0.1.2
- [x] Parse conditionals
2024-08-27 23:34:30 +00:00
- [x] Parse arrays
2024-08-28 13:52:35 +00:00
- [x] Parse for loops
2024-08-28 14:45:58 +00:00
- [x] Parse while loops
2024-08-29 14:12:08 +00:00
- [x] Typecheck arrays
- [x] Typecheck if/else if/else
- [x] Typecheck for loops
2024-08-29 15:11:05 +00:00
- [x] Typecheck while loops
- [x] Include Ariadne for error reporting
- [x] Migrate lexic errors to new error interface
- [x] Migrate syntax errors to new error interface
- [x] Migrate semantic errors to new error interface
2024-08-27 21:09:12 +00:00
2024-08-01 20:37:00 +00:00
## v0.1.1
- [x] Top level expressions as statements
2024-08-13 20:19:18 +00:00
- [x] Naively transpile variable bindings
- [x] Store tokens in the AST, to have actual error reporting
- [x] Scan octal and binary numbers
- [x] Simple type checking
- [x] Check for conflicting identifiers at the current scope
2024-08-27 12:50:57 +00:00
- [x] Semantic check for unary operator
- [x] Semantic check for binary operator
- [x] Enforce new lines after every statement
2024-08-13 20:19:18 +00:00
2024-08-01 20:37:00 +00:00
## v0.1.0
2024-07-27 23:44:54 +00:00
- [x] Complete workflow for "Hello world"
2024-07-29 21:18:33 +00:00
- [x] Multiline comments
2024-07-30 20:55:29 +00:00
- [x] Nested multiline comments
- [x] Replace all panics with actual errors
- [x] Remove all old codegen
- [x] Test codegen
- [x] Reenable semantic analysis
- [x] Create minimal type definitions for the stdlib
2024-07-27 23:44:54 +00:00
## v0.0.14
- [x] Define a minimal PHP AST
- [x] Transform THP AST into PHP AST
2024-07-27 23:44:54 +00:00
- [x] Implement minimal codegen for the PHP AST
- [x] Finish the workflow for a hello world
2024-05-30 21:05:31 +00:00
## v0.0.13
- [x] Begin work on a formal grammar
- [x] Simplify/rewrite AST
- [x] Properly parse expression indentation/dedentation
- [x] Define the top level constructs
- [x] Emit INDENT/DEDENT alone instead of NewLine+INDENT/DEDENT
- [x] Refactor code
2024-06-03 00:29:25 +00:00
- [x] Remove `PARSER couldn't parse any construction` error & replace with an actual error message
2024-05-30 21:05:31 +00:00
2023-12-10 01:04:44 +00:00
2024-03-10 02:54:29 +00:00
## v0.0.12
2024-05-05 21:01:11 +00:00
- [x] Infer datatype of an identifier
2024-05-06 15:13:21 +00:00
- [x] Infer datatype of a binary operatior
2024-05-30 19:59:45 +00:00
- [x] Infer datatype of unary operator
2024-05-30 21:05:31 +00:00
- [x] Infer datatype of binary operators
2024-05-06 15:13:21 +00:00
- [x] Infer Int & Float as different types
2024-05-30 21:05:31 +00:00
- [x] Execute semantic analysis on the function's block
- [x] Write tests
2024-03-10 02:54:29 +00:00
## v0.0.11
- [x] Parse binding of form `val Type variable = value`
- [x] Parse binding of form `Type variable = value`
2024-05-05 00:23:53 +00:00
- [x] Infer datatype of `value` in the above for a simple expression (minimal)
- [x] Ensure that the anotated datatype matches the datatype of `value` in the above (binding)
- [x] Infer datatype of a `val variable = value` in the AST: Use the infered datatype (binding)
- [x] Formally define the top level constructs
- [x] Parse bindings and function declarations as top level constructs
2024-03-18 21:40:22 +00:00
- [x] Parse function declaration arguments (`Type id`)
2024-03-18 14:20:21 +00:00
- [x] Parse function return datatype (`fun f() -> Type`)
2024-03-18 13:57:28 +00:00
- [x] Return parsing to variables to var/val
2024-05-05 00:00:47 +00:00
- [x] Write tests
2024-03-10 02:54:29 +00:00
2023-12-10 01:04:44 +00:00
## v0.0.10
2024-01-12 00:29:19 +00:00
- [x] Parse function call parameters
2024-01-12 00:36:11 +00:00
- [x] Codegen function call parameters
2024-02-04 01:19:09 +00:00
- [x] Begin work on semantic analysis
- [x] Minimal symbol table
- [x] Check duplicate function declarations
2024-03-09 13:05:40 +00:00
- [x] Improve REPL/File compilation code
- [x] Check binding duplication in it's scope
- [x] Check function duplication in it's scope
- [x] Transform simple THP expression into PHP statements
2023-12-10 01:04:44 +00:00
## v0.0.9
2023-12-17 01:35:24 +00:00
- [x] Hand-make CLI, remove clap
- [x] Compile a single file
2024-01-02 11:31:27 +00:00
- [x] Display error messages during compilation instead of panicking
- [x] Improve error messages
- [x] Implement code generation for ast nodes implemented as of now
2023-12-10 01:04:44 +00:00
2023-03-28 15:06:23 +00:00
2023-09-20 01:42:03 +00:00
2023-10-06 01:26:47 +00:00
## v0.0.8
- Parse block of code
2023-10-06 01:26:47 +00:00
- Parse multiple statements inside a block
- Parse unary operator (`!` & `-`)
2023-11-22 02:40:11 +00:00
- Parse binary operators
2023-10-06 01:26:47 +00:00
2023-10-01 22:18:28 +00:00
## v0.0.7
- Parse minimal function declarations following a grammar
2023-10-05 11:56:21 +00:00
- Parse function call, binding as statement
- Parse a statement as body of a function declaration
2023-10-01 22:18:28 +00:00
2023-09-20 01:42:03 +00:00
## v0.0.6
- Parse function declarations
- Parse multiple function declarations
- Parse multiple bindings
- Compile from file
- Emit INDENT & DEDENT tokens
2023-03-28 15:06:23 +00:00
## v0.0.5
- Scan single line comments
- Refactor String token to include double quotes (") in its content
- Refactor datachecking of semantic analysis
2023-09-20 01:42:03 +00:00
## v0.0.4
- Explicit datatype of variables
- Improve error messages when a syntax error is found (show offending line and offending token)
2023-03-28 15:06:23 +00:00
- Show different error messages for val/var binding
## v0.0.3
- Get datatype of an identifier from the symbol table
- Improve documentation of the code
2023-02-14 20:22:29 +00:00
- Simple ASI: insert semicolon after a single or series of new lines
- The token stream now always ends with a Semicolon and EOF token, regardless of input
2023-02-11 14:52:30 +00:00
## v0.0.2
- Compilation of `val` and `var` bindings with a number, string or boolean as value.
- Register symbols and datatypes in the Symbol table.
- Add better error messages for lexical errors. Show:
- Offending line
- Pointer to offending character
- Error message
2023-02-11 14:52:30 +00:00
2023-01-23 14:31:49 +00:00
## v0.0.1
- Compilation of a `val` binding with a number.
- Scan all tokens except new lines, indentation.