Skip to content
This repository has been archived by the owner on Aug 9, 2024. It is now read-only.

Latest commit

 

History

History
175 lines (124 loc) · 7.37 KB

CHANGELOG.md

File metadata and controls

175 lines (124 loc) · 7.37 KB

Changelog for PirateLang

Ordered by Release/Milestone, then pullrequest. Listing the changes made.

2.0.0

  • (PIRATE-22) Add Solution Folder hierarchy
  • (PIRATE-23) Add Specflow Test project
  • (PIRATE-24) Add Pirate prefix to Namespaces and Projects
  • (PIRATE-25) Move Logger and FileHandler to seperate projects
  • (PIRATE-29) Create a Exception project
  • (PIRATE-2) Flowchart diagram
  • (PIRATE-33) Location not found in variables.json

1.1.0

(#71) XML docs for filehandler usage

  • Added XML documentation for FileReadHandler and FileWriteHandler
  • Removed not referenced objects

(#74) Control Statements

  • Added parsers and interpreters for: IfStatementNode, ForLoopStatementNode and WhileLoopStatementNode
  • Additional Token.Matches() test after Value check fix
  • Added FileExtension enum to Filehandlers
  • Created BaseFileHandler
  • Changed Interpreter returns to List<BaseValue>

(#82) Variable Assignment

  • Added parser Flowchart.
  • Changed SymbolTable to type of Dictionary<string, BaseValue>
  • Split Variable Nodes
    • Variable decalaration looks like: var a = 10
    • Variable assignment looks like: a = 10
      • Variable must have been declared before being reassigned.
  • Changed Interpreters to use int index insted of Token currentToken
  • Further Logger improvements

(#85) Further changes following #82

  • Small renaming improvements

(#90) Functions

  • Add functions to the language
    • New FunctionDefinitionParser parser and new FunctionCallNode, FunctionDefinitionNode, ParameterDefinitionNode nodes
    • Added FunctionCallInterpreter and FunctionDefinitionInterpreter
    • Removed the automatic result printing, replaced by the new IO.print() function
  • Started the Standard Libraries
    • Added a Function Call manager
    • Created the IOLibrary
  • Moved variables.json into /bin folder
    • Template created upon start
  • Update to .net 7
  • Small Logger rework

(#100) Removing Binary serialization

  • Replacing Binary serialization with JSON serialization
    • Changed interpreters to use Int64 instead of int and double instead of single
    • Refined token to just use TokenGroup and TokenType enums
  • Added Logo to README.md
  • Refactored Parser and Interpreter methods
  • Added XML documentation comment per class

(#106) Refactor BaseValue operations

  • Cleaned up OperatedBy functions
  • Allowed float integer operations
  • Added comments between // and ;
  • Added Modulo % operator

1.0.0

(#39) New Lexer, Parser and Interpreter

  • Completely remade Parser
    • Using a Factory pattern get a Parser per token type. This is using the LL parser pattern.
    • Creates a Scope, which consits of a List of Nodes.
  • Completely remade Interpreter
    • Using a Factory pattern get a Interpreter for each node.
    • Returns a BaseValue foreach node.
  • Partially Rewrote Lexer, to simplify.
  • Created a Object serializer, which takes a Scope and serializes it to binary.

(#49) Semicolons

  • Added Semicolon token to parser.

(#51) Error Handling and Validation

  • Created Custom exceptions for Type Conversion and Parsing Exceptions
  • Added validation for type conversions
  • Replaced null return with errors
  • Created base class constructors

(#53) Fixing Float and Chaarcter issues

  • Moved Logger and Factory to BaseInterpeter
  • Moved Logger and Value to BaseVaule
  • Added more possible nodes to variables
  • Started on Validation methods per entity. #60
  • Fixed Float and Character lexing errors

(#62) Command Rework

  • Refined and Refactored commands
  • Added a dependency injection container, from Application to the Parser and Lexer
  • Moved constant variable parameters to variables.json and added new EnvironmentVariables class to get these variables
  • Created repl command shell
  • Fixed lexer for multiple inputs
  • Move common interfaces to Common.Interfaces

(#66) Implicit usings

  • Removed unnecessary usings.
  • Added implicit using in Usings.g.cs

(#68) Lexer Rewrite

  • Completely rewrote lexer to remove the static methods and fields.
  • Renamed Lexer, Parser and Interpreter to PirateLexer, PirateParser and PirateInterpreter

(#69) FileHandlers

  • Added a two filehandlers for writing and reading

(#70) Unit Tests

  • Created Unit Tests for Lexer, Parser, Interpreter projects

0.1.2

(#32) Shell, CLI Improvements

  • Added build command to test files. Later to be joined by #35.
  • Created .log file, added logging in the new Common project
  • Checking for modificationdate in modules.json and setting the new data in the build command

0.1.1

(#9) Shell, CLI Improvements

  • Added pirate init command for creating default gitignore and gitattributes
  • Moved Commands + Argument logic from Program.cs to CommandRepository.cs
    • Arguments from command line are passed as string, if no argument is given string.empty is passed
  • Removed capability from non argument calls, new issue was created: #13 Move non argument command result to --help/-h parameter

(#14) Workflow building

  • Added default .NET workflow to check if the project builds.

(#18) Added new tokens

  • Added list defined between []
  • Added for loop for looping through a range
  • Added foreach loop for looping through a collection
    • New foreach and in keywords
  • Added += . and $ operators
  • Added SYNTAX.ms for current syntax

(#25) new command structure, added -h and --help arguments

  • Added new Factory pattern in ICommand.cs and CommandFactory.cs
  • Defined -h and --help arguments per command

(#26) added comments between: // and ;. added true and false

  • Added true and false booleans
  • Ignored tokens between // and ; in the parser acting as comments

(#37) Testing

  • Created test for Common, Parser and Lexer
  • Made logger.Log non static