thp/CHANGELOG.md
2024-08-13 15:19:18 -05:00

4.7 KiB

Changelog

TODO

  • Test correct operator precedence
  • Implement functions as first class citizens
  • Parse more binary operators
  • Parse more complex bindings
  • Rework error messages
  • Parse other language constructions
  • 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?)
  • Fix comment handling in the AST
  • 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!

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

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 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

v0.0.1

  • Compilation of a val binding with a number.
  • Scan all tokens except new lines, indentation.