All checks were successful
continuous-integration/appveyor/branch AppVeyor build succeeded
Added examples and automatic copying of them to the output directory, for launching in the example profiles
56 lines
2.5 KiB
Markdown
56 lines
2.5 KiB
Markdown
# 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.
|
|
|
|
<br>
|
|
|
|
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*
|
|
|
|
<br>
|
|
|
|
The application accepts piped input streams via `StreamReader` and piped input via `type <file> | <application>`
|
|
|
|
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.
|
|
|
|
<br>
|
|
|
|
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)
|