Enabled multiple expressions on one line
All checks were successful
continuous-integration/appveyor/branch AppVeyor build succeeded

This commit is contained in:
Brychan Dempsey 2021-03-29 15:24:11 +13:00
parent 51920ef69e
commit a37aa07ede
2 changed files with 58 additions and 8 deletions

View File

@ -139,9 +139,10 @@ namespace Assignment_1
long lastLinePos = 0; long lastLinePos = 0;
long initPos = 0; long initPos = 0;
bool cont = false; bool cont = false;
bool isLineFinished = true;
while (true) while (true)
{ {
if (dynamicInput) if (dynamicInput && isLineFinished)
{ {
lastLinePos = source.Position; lastLinePos = source.Position;
if (!cont) if (!cont)
@ -230,7 +231,10 @@ namespace Assignment_1
// Increment the source pos past the semi-colon // Increment the source pos past the semi-colon
cont = false; cont = false;
source.Position++; source.Position++;
if (dynamicInput) SkipWhitespace(source);
if (source.Position == source.Length) isLineFinished = true;
else isLineFinished = false;
if (dynamicInput && isLineFinished)
{ {
// Nicely format the output stream, so we may print it cleanly // Nicely format the output stream, so we may print it cleanly
source.WriteByte((byte)'\n'); source.WriteByte((byte)'\n');
@ -241,7 +245,7 @@ namespace Assignment_1
return; return;
} }
} }
else if (source.Position != lastLinePos)// - 1) else if (source.Position != lastLinePos)
{ {
// In the case that we expect some more data, we must keep tabs of our current line, and keep accumulating data until we're finished // In the case that we expect some more data, we must keep tabs of our current line, and keep accumulating data until we're finished
lastLinePos = source.Position; lastLinePos = source.Position;
@ -259,11 +263,12 @@ namespace Assignment_1
throw new ParserException("Failed parsing statement", 0, source.Position); throw new ParserException("Failed parsing statement", 0, source.Position);
} }
} }
// Throwing a parserexception will return us to this point immediately. From here, the line is automatically restored, // Throwing a ParserException will return us to this point immediately. From here, the line is automatically restored,
// and the excepion printed to the console window. // and the excepion printed to the console window.
// This means that each function does not need to keep track of our current position in the stream // This means that each function does not need to keep track of our current position in the stream
catch (ParserException e) catch (ParserException e)
{ {
isLineFinished = true;
if (e.Importance > 3) if (e.Importance > 3)
{ {
throw new ApplicationException("A critical error occurred."); throw new ApplicationException("A critical error occurred.");
@ -274,10 +279,6 @@ namespace Assignment_1
} }
else else
{ {
/*
Console.WriteLine(e.LinePosition + ": " + e.Message);
source.Position = initPos;
source.SetLength(initPos);*/
WriteDebugLine(0, 0, e.Message, source); WriteDebugLine(0, 0, e.Message, source);
} }
if (!dynamicInput) if (!dynamicInput)

49
Assignment 1/example4.txt Normal file
View File

@ -0,0 +1,49 @@
set a1 "
To be, or not to be - that is the question:
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune
Or to take arms against a sea of troubles,
And by opposing end them. To die - to sleep -
No more; and by a sleep to say we end
The heartache, and the thousand natural shocks
That flesh is heir to. 'Tis a consummation
Devoutly to be wish'd. To die - to sleep.
To sleep - perchance to dream: ay, there's the rub!
For in that sleep of death what dreams may come
When we have shuffled off this mortal coil,
Must give us pause. There's the respect
That makes calamity of so long life.
For who would bear the whips and scorns of time,
The oppressor's wrong, the proud man's contumely,
The pangs of despised love, the law's delay,
The insolence of office, and the spurns
That patient merit of the unworthy takes,
When he himself might his quietus make" + NEWLINE +
"With a bare bodkin?
";
set averylongvariablethathasbeencontrivedjusttobeanuisancetothe341classwhohaveprobablythoughtthattheycouldgetawaywithallocatingshortvariablenamesofashortlengthbutaregoingtobereallydisappointediftheydidbecausethisisnotashortvariableidentifieratall "
Who would these fardels bear,
To grunt and sweat under a weary life,
But that the dread of something after death -
The undiscover'd country, from whose bourn
No traveller returns - puzzles the will,
And makes us rather bear those ills we have
Than fly to others that we know not of?
Thus conscience does make cowards of us all,
And thus the native hue of resolution
Is sicklied o'er with the pale cast of thought,
And enterprises of great pith and moment
With this regard their currents turn awry
And lose the name of action.";
set soliloquy a1 + NEWLINE + averylongvariablethathasbeencontrivedjusttobeanuisancetothe341classwhohaveprobablythoughtthattheycouldgetawaywithallocatingshortvariablenamesofashortlengthbutaregoingtobereallydisappointediftheydidbecausethisisnotashortvariableidentifieratall;
set dummy "dummy1";
print soliloquy;
printwordcount soliloquy;
printwords soliloquy;
printlength soliloquy;
list;
exit;