# 159.341 Assignment 1 - String Interpreter [![Build status](https://ci.software.kauripeak.co.nz/api/projects/status/44sgyt4dadc2il99?svg=true)](https://ci.software.kauripeak.co.nz/project/AppVeyor/159-341-assignment-1) ## A basic interpreter for a simple programming language. There is only one implicit type definition - strings.
This program is written in C# (.NET Core 3.0*) and specifically avoids the use of the `regex` class and the ```cs string.split() ``` method to show an understanding of the implementation. \* *.NET Core 3.0 **should** be supported on the lab machines*
The application accepts piped input streams via `StreamReader` and piped input via `type | ` There are preconfigured build options that will automatically pipe the example files: [![VS Build Configuration](https://git.software.kauripeak.co.nz/content/upload/159.341/159-341-assignment-1-build-configuration.png)](https://git.software.kauripeak.co.nz/content/upload/159.341/159-341-assignment-1-build-configuration.png) These examples are automatically copied to the output directory at build.
This stream is navigated character-by-character (not byte-by-byte) Example usage: ```py set somevar "NewValue"; set othervar somevar + SPACE + ";"; list; exit; ``` Would output: ``` ┌─────────────┬──────────────────────┬─────────┐ │ Symbol │ Value │ Flags │ ├─────────────┼──────────────────────┼─────────┤ │somevar │NewValue │00000000 │ ├─────────────┼──────────────────────┼─────────┤ │othervar │NewValue ; │00000000 │ └─────────────┴──────────────────────┴─────────┘ ``` ## Additional Parameters | Behaviours * The option `list;` may be augmented with the parameter `all` (i.e. `list all;`), which will additionally list the constant/global symbols. * It is possible to save the command list on `exit;`; this is prompted and guided. * The program instances its operation; at `exit;` you will have the option to load a new file or write a new program * A quick help option is available by using the command `h` (semi-colon not required)