Some checks failed
continuous-integration/appveyor/branch AppVeyor build succeeded
continuous-integration/appveyor/pull-request AppVeyor was unable to build non-mergeable pull request
159.341 Assignment 1 - String Interpreter ![Build status](https://ci.software.kauripeak.co.nz/api/projects/status/44sgyt4dadc2il99?svg=true)
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
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 <file> | <application>
There are preconfigured build options that will automatically pipe the example files:
These examples are automatically copied to the output directory at build.
This stream is navigated character-by-character (not byte-by-byte)
Example usage:
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 parameterall
(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).
NB:
- A double quote can be inserted into the literal by using a backslash immediately beforehand (i.e.
\"
)
set someVar "this literal \" has a value";
prints
this literal " has a value
Languages
C#
100%