thp/CHANGELOG.md

145 lines
4.2 KiB
Markdown
Raw Normal View History

2023-01-23 14:31:49 +00:00
# Changelog
## TODO
2024-05-30 21:05:31 +00:00
- Implement functions as first class citizens
2024-03-09 13:05:40 +00:00
- Implement AST transformation before codegen:
Create a new AST to represent PHP source code
and a THP ast -> PHP ast process, so that the
codegen section can focus only in codegen, not in
translation of thp->php.
2023-12-10 01:04:44 +00:00
- Parse __more__ binary operators
2024-05-05 21:01:11 +00:00
- Store tokens for the semantic analysis phase, to have actual error reporting
2023-09-20 01:42:03 +00:00
- Parse more complex bindings
- Watch mode
2023-04-16 23:17:28 +00:00
- Improve error messages
- Parse other language constructions
- Type checking
- Check for conflicting identifiers
- Namespace identifiers in the symbol table
- Stdlib
- Document code
2023-12-10 01:04:44 +00:00
- Watch mode
- Formatter
- Simple language server
- Decide how to handle comments in the syntax (?)(should comments mean something like in rust?)
2024-05-30 19:59:45 +00:00
- Not ignore comments & whitespace, for code formatting
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
## v0.0.13
2024-06-01 23:57:10 +00:00
- [ ] Begin work on a formal grammar
- [ ] Simplify AST
2024-05-30 21:05:31 +00:00
- [ ] Define the top level constructs
2024-06-01 23:57:10 +00:00
- [ ] Include the original tokens in the AST
2024-05-30 21:05:31 +00:00
- [ ] Implement a hello world until semantic analysis
- [ ] Refactor code
2024-06-01 23:57:10 +00:00
- [ ] 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.