5.5 KiB
5.5 KiB
Changelog
TODO
- Implement functions as first class citizens
- Parse more binary operators
- Parse more complex bindings
- Namespace identifiers in the symbol table
- Stdlib
- Document code
- Watch mode
- Simple language server
- Decide how to handle comments in the syntax (?)(should comments mean something like in rust?)
- Abstract the parsing of datatypes, such that in the future generics can be implemented in a single place
- Begin work on the code formatter
- 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
- Test assignment parsing
v0.1.3
- Test semantic analysis
- Generate php code from current AST
- Test correct operator precedence
- Parse assignments
- Parse dot
.
operator - Parse logic operators
&& ||
- Parse Array access
arr[pos]
- Parse namespace operator
::
- Implement subtyping for numbers
v0.1.2
- Parse conditionals
- Parse arrays
- Parse for loops
- Parse while loops
- Typecheck arrays
- Typecheck if/else if/else
- Typecheck for loops
- Typecheck while loops
- Include Ariadne for error reporting
- Migrate lexic errors to new error interface
- Migrate syntax errors to new error interface
- Migrate semantic errors to new error interface
v0.1.1
- Top level expressions as statements
- Naively transpile variable bindings
- Store tokens in the AST, to have actual error reporting
- Scan octal and binary numbers
- Simple type checking
- Check for conflicting identifiers at the current scope
- Semantic check for unary operator
- Semantic check for binary operator
- Enforce new lines after every statement
v0.1.0
- Complete workflow for "Hello world"
- Multiline comments
- Nested multiline comments
- Replace all panics with actual errors
- Remove all old codegen
- Test codegen
- Reenable semantic analysis
- Create minimal type definitions for the stdlib
v0.0.14
- Define a minimal PHP AST
- Transform THP AST into PHP AST
- Implement minimal codegen for the PHP AST
- Finish the workflow for a hello world
v0.0.13
- Begin work on a formal grammar
- Simplify/rewrite AST
- Properly parse expression indentation/dedentation
- Define the top level constructs
- Emit INDENT/DEDENT alone instead of NewLine+INDENT/DEDENT
- Refactor code
- Remove
PARSER couldn't parse any construction
error & replace with an actual error message
v0.0.12
- Infer datatype of an identifier
- Infer datatype of a binary operatior
- Infer datatype of unary operator
- Infer datatype of binary operators
- Infer Int & Float as different types
- Execute semantic analysis on the function's block
- Write tests
v0.0.11
- Parse binding of form
val Type variable = value
- Parse binding of form
Type variable = value
- Infer datatype of
value
in the above for a simple expression (minimal) - Ensure that the anotated datatype matches the datatype of
value
in the above (binding) - Infer datatype of a
val variable = value
in the AST: Use the infered datatype (binding) - Formally define the top level constructs
- Parse bindings and function declarations as top level constructs
- Parse function declaration arguments (
Type id
) - Parse function return datatype (
fun f() -> Type
) - Return parsing to variables to var/val
- Write tests
v0.0.10
- Parse function call parameters
- Codegen function call parameters
- Begin work on semantic analysis
- Minimal symbol table
- Check duplicate function declarations
- Improve REPL/File compilation code
- Check binding duplication in it's scope
- Check function duplication in it's scope
- Transform simple THP expression into PHP statements
v0.0.9
- Hand-make CLI, remove clap
- Compile a single file
- Display error messages during compilation instead of panicking
- Improve error messages
- Implement code generation for ast nodes implemented as of now
v0.0.8
- Parse block of code
- Parse multiple statements inside a block
- Parse unary operator (
!
&-
) - Parse binary operators
v0.0.7
- Parse minimal function declarations following a grammar
- Parse function call, binding as statement
- Parse a statement as body of a function declaration
v0.0.6
- Parse function declarations
- Parse multiple function declarations
- Parse multiple bindings
- Compile from file
- Emit INDENT & DEDENT tokens
v0.0.5
- Scan single line comments
- Refactor String token to include double quotes (") in its content
- Refactor datachecking of semantic analysis
v0.0.4
- Explicit datatype of variables
- Improve error messages when a syntax error is found (show offending line and offending token)
- 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
- 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
v0.0.2
- Compilation of
val
andvar
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
v0.0.1
- Compilation of a
val
binding with a number. - Scan all tokens except new lines, indentation.