Added support for RESTORE statement. Also modified Lexer to be able to parse strings...
authorMichael Welch <michaelgwelch@gmail.com>
Thu, 28 Dec 2006 19:38:28 +0000 (19:38 +0000)
committerMichael Welch <michaelgwelch@gmail.com>
Thu, 28 Dec 2006 19:38:28 +0000 (19:38 +0000)
commite275c0d84f0334048d7841b38e793371de0d6c37
tree92795be4c5ffa878d88757de49eddeaff8833f0f
parent905fcc16a9657d64f78d49b27099787bf64eab0c
Added support for RESTORE statement. Also modified Lexer to be able to parse strings with double quotes in them.

Lexer.cs:
Added support for double quotes in a string.

mbasic.csproj:
Added Restore.cs and read.mbas

Parser.cs:
Added support for parsing RESTORE. Needed to modify the structure used to collect the DATA elements to allow for RESTORING'ing back to any label. Fixed MorePrintList to make sure a print seperator is used between print items.

Program.cs:
Modified the structure used for collection DATA elements to support RESTORE'ing to a label number. Reserved the word RESTORE.

For.cs:
Added a LineId to the constructor so that a label could be associated with the FOR statement (which is needed if we want to GOTO a for statement).

Statement.cs:
Added lineLabelAssigned field to make sure that MarkLabel doesn't throw an exception if lineLabel has not been assigned.

Token.cs:
Added Restore

print.mbas:
Added tests for double quotes in a string.

testPrint.py:
Added check for test added in print.mbas.

BuiltIns.cs:
Minor fix to PrintNumber to make sure a leading space is printed only after any NewLine is printed. And fixed the calculation.

Changed the structure used to hold DATA elements. As a result I needed one common Read method to be shared by ReadDouble and ReadStrinng which would keep the pointers to the current location up to date in one place. (Probably should be its own class.)

Restore.cs
Added. Represents a Restore statement in an AST.

read.mbas:
Added tests from II-61 and II-62.

testRead.py:
Checks the results of read.mbas.
13 files changed:
TiBasicRuntime/BuiltIns.cs
mbasic/Lexer.cs
mbasic/Parser.cs
mbasic/Program.cs
mbasic/SyntaxTree/For.cs
mbasic/SyntaxTree/Restore.cs [new file with mode: 0644]
mbasic/SyntaxTree/Statement.cs
mbasic/Token.cs
mbasic/mbasic.csproj
samples/print.mbas
samples/read.mbas [new file with mode: 0644]
samples/testPrint.py
samples/testRead.py [new file with mode: 0644]