Ordered by Release/Milestone, then pullrequest. Listing the changes made.
- (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
(#71) XML docs for filehandler usage
- Added XML documentation for
FileReadHandler
andFileWriteHandler
- Removed not referenced objects
(#74) Control Statements
- Added parsers and interpreters for:
IfStatementNode
,ForLoopStatementNode
andWhileLoopStatementNode
- 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.
- Variable decalaration looks like:
- Changed Interpreters to use
int index
insted ofToken currentToken
- Further
Logger
improvements
(#85) Further changes following #82
- Small renaming improvements
(#90) Functions
- Add functions to the language
- New
FunctionDefinitionParser
parser and newFunctionCallNode
,FunctionDefinitionNode
,ParameterDefinitionNode
nodes - Added
FunctionCallInterpreter
andFunctionDefinitionInterpreter
- Removed the automatic result printing, replaced by the new
IO.print()
function
- New
- 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 ofint
anddouble
instead ofsingle
- Refined token to just use
TokenGroup
andTokenType
enums
- Changed interpreters to use
- 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
(#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 newEnvironmentVariables
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
(#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
(#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
andCommandFactory.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