mbasic99.git
6 years agosources were not complete Release-0.1
Michael Welch [Thu, 11 Nov 2010 01:42:25 +0000 (01:42 +0000)] 
sources were not complete

9 years agoRenamed remotely
Michael Welch [Wed, 26 Sep 2007 00:37:31 +0000 (00:37 +0000)] 
Renamed remotely

9 years agoCreate Revision 0.1 from revision 56.
Michael Welch [Wed, 26 Sep 2007 00:36:47 +0000 (00:36 +0000)] 
Create Revision 0.1 from revision 56.

10 years agoRenamed TiBasicRuntime.dll.sources to TIBasicRuntime.dll.sources
Michael Welch [Mon, 5 Feb 2007 17:18:19 +0000 (17:18 +0000)] 
Renamed TiBasicRuntime.dll.sources to TIBasicRuntime.dll.sources

10 years agorenamed TiBasicRuntime.csproj to TIBasicRuntime.csproj
Michael Welch [Mon, 5 Feb 2007 17:17:36 +0000 (17:17 +0000)] 
renamed TiBasicRuntime.csproj to TIBasicRuntime.csproj

10 years agorenamed TiBasicRuntime folder to TIBasicRuntime
Michael Welch [Mon, 5 Feb 2007 17:16:35 +0000 (17:16 +0000)] 
renamed TiBasicRuntime folder to TIBasicRuntime

10 years agoAdded program for On-Goto statement.
Michael Welch [Sat, 3 Feb 2007 21:22:41 +0000 (21:22 +0000)] 
Added program for On-Goto statement.

10 years agoAdded support for On-Goto statement:
Michael Welch [Sat, 3 Feb 2007 21:20:56 +0000 (21:20 +0000)] 
Added support for On-Goto statement:

mbasic.csproj:
Treat warnings as errors.
Added CompilerException and TypeCheckException classes.
Added OnGoto class.

Parser.cs:
Added support for parsing OnGoto.

Program.cs:
For statements that do jumps to be able to validate the destination
line numbers exist, I needed to RecordLabels before doing type checking.

Goto.cs:
Check destination label

Gosub.cs:
Check destination label

OnGoto.cs:
Finish implementation.

10 years agoAdded BuiltIns.Round method.
Michael Welch [Sat, 3 Feb 2007 20:47:07 +0000 (20:47 +0000)] 
Added BuiltIns.Round method.
Removed all the Get and Set methods for dealing with arrays.
Added BadValueError method.

10 years agoStarted implementing OnGoto Statement. Added reserved work On. Created skeleton of...
Michael Welch [Sat, 3 Feb 2007 17:48:04 +0000 (17:48 +0000)] 
Started implementing OnGoto Statement. Added reserved work On. Created skeleton of OnGoto.cs

10 years agoUpdate svn:ignore on all directories to ignore *.mdb, *.il, *.exe, *.dll, *.pyc
Michael Welch [Sat, 3 Feb 2007 00:22:17 +0000 (00:22 +0000)] 
Update svn:ignore on all directories to ignore *.mdb, *.il, *.exe, *.dll, *.pyc

10 years agoAdded some more sample programs and verification scripts. Updated Makefile to run...
Michael Welch [Sat, 3 Feb 2007 00:11:50 +0000 (00:11 +0000)] 
Added some more sample programs and verification scripts. Updated Makefile to run new test scripts

10 years agoSet the executable bit on testData.py and testRead.py
Michael Welch [Thu, 1 Feb 2007 03:42:47 +0000 (03:42 +0000)] 
Set the executable bit on testData.py and testRead.py

10 years agoAdded bin folder and script for running mbasic
Michael Welch [Thu, 1 Feb 2007 03:19:41 +0000 (03:19 +0000)] 
Added bin folder and script for running mbasic

10 years agoupdated python scripts to be true python not iron python. Added Makefile to run 3...
Michael Welch [Thu, 1 Feb 2007 03:18:59 +0000 (03:18 +0000)] 
updated python scripts to be true python not iron python. Added Makefile to run 3 tests

10 years agoFixed warnings that showed up when compiling for mono. Added Makefile and list of...
Michael Welch [Thu, 1 Feb 2007 03:17:36 +0000 (03:17 +0000)] 
Fixed warnings that showed up when compiling for mono. Added Makefile and list of sources mbasic.exe.sources. Also fixed how ArrayElement gets and sets elements because bug in mono was fixed

10 years agoAdded AssemblyInfo.cs with key attribute. Checked in key. For our purposes its okay...
Michael Welch [Thu, 1 Feb 2007 03:15:37 +0000 (03:15 +0000)] 
Added AssemblyInfo.cs with key attribute. Checked in key. For our purposes its okay if it's not private. Added Makefile and TiBasicRuntime.dll.sources

10 years agoFixed Radix100.ToString() in the case of exponents < -99
Michael Welch [Thu, 1 Feb 2007 03:13:21 +0000 (03:13 +0000)] 
Fixed Radix100.ToString() in the case of exponents < -99

10 years agocopied some samples from a branch to trunk. Added two new samples.
Michael Welch [Sun, 28 Jan 2007 03:48:23 +0000 (03:48 +0000)] 
copied some samples from a branch to trunk. Added two new samples.

10 years agomerged branches/arraytemp 31 - 39 into trunk
Michael Welch [Thu, 25 Jan 2007 03:54:58 +0000 (03:54 +0000)] 
merged branches/arraytemp 31 - 39 into trunk

10 years agosome refactoring to delay typing variables until they are used. this is in anticipati...
Michael Welch [Wed, 17 Jan 2007 04:50:27 +0000 (04:50 +0000)] 
some refactoring to delay typing variables until they are used. this is in anticipation of adding support for arrays.

10 years agoRadix100.cs: Remove special case for large exponents. Can be handled normally.
Michael Welch [Wed, 10 Jan 2007 04:34:19 +0000 (04:34 +0000)] 
Radix100.cs: Remove special case for large exponents. Can be handled normally.

Program.cs:
Initialize strings to Empty string. This seems to mimic the TI Basic approach. Alternatively we could add null checks before each use of a string and set it to String.Empty if it is null. This is easier.

10 years agoAdded support for multiple variable variable list in input statement.
Michael Welch [Wed, 10 Jan 2007 02:35:40 +0000 (02:35 +0000)] 
Added support for multiple variable variable list in input statement.

10 years agoModified Read.cs to just be a collection of Assign statements. That way we have less...
Michael Welch [Mon, 8 Jan 2007 00:32:26 +0000 (00:32 +0000)] 
Modified Read.cs to just be a collection of Assign statements. That way we have less redundant code for storing to local variables. To facilitate this I created a new type of Expression: BuiltInsMethodCall. This is a nice expression that encapsulates calls to BuiltIns into an Expression.

10 years agogosub.mbas:
Michael Welch [Sat, 6 Jan 2007 21:46:32 +0000 (21:46 +0000)] 
gosub.mbas:
Made this example a little trickier to make sure nested gosubs worked correctly.

10 years agoAdded support for Gosub/Return.
Michael Welch [Sat, 6 Jan 2007 21:12:18 +0000 (21:12 +0000)] 
Added support for Gosub/Return.

Lexer.cs:
Modified lexer to return Token.Remark. It turns out that comments are significant in one respect: They have line numbers and can therefore be the target of a Goto or Gosub. Therefore we need to return this info to the Parser.cs

mbasic.csproj:
Added Gosub.cs, Remark.cs and Return.cs.

Parser.cs:
Added parsing for Remarks, Go Sub, Gosub, and Return statements. Note Go Sub and Gosub are equivalent statements but parse differently.

Program.cs:
Added the keywords Go, Sub, Gosub, and Return. Also, the main program generates a a block of code that includes a switch statement at the end of the program that is used to implement RETURN. During CheckTypes an index number is assigned to each GOSUB location. That index number is assigned a label that corresponds to the line of code immediately after the GOSUB. When a GOSUB is encountered the index number of the GOSUB is pushed onto a stack using BuiltIns.PushReturnAddress. A RETURN statement branches to the block of code discussed above. It calls BuiltIns.PopReturnAddress to get the index of the calling GOSUB. Then it calls the switch statement which uses the index to branch to the correct return location.

Gosub.cs, Return.cs, Remarks.cs: Added nodes for Gosub, Return and Remark.cs

Node.cs:
added fields returnLabels and returnSwitch.

Token.cs:
Added Go, Sub, Gosub, and Return.

BuiltIns.cs:
Added a field to hold a stack, and added PushReturnAddress and PopReturnAddress.

gosub.mbas:
Added a test program for testing gosubs.

10 years agoAllowed Randomize to have any numeric expression for a seed.
Michael Welch [Fri, 29 Dec 2006 02:44:12 +0000 (02:44 +0000)] 
Allowed Randomize to have any numeric expression for a seed.

Parser.cs:
Fixed parsing of Randomize to allow any numeric expression.

Randomize.cs:
Modified class to take an expression rather than an int for its seed. Modifed Emit to match this.

secrenum.mbas:
Modified program to show that even a relational expression can be used as a seed.

BuiltIns.cs:
Modified RandomizeWithSeed to take a double instead of an int.

10 years agoModified the nodes of the AST to use 0/1 for bools internally. So all of the Relation...
Michael Welch [Fri, 29 Dec 2006 02:03:36 +0000 (02:03 +0000)] 
Modified the nodes of the AST to use 0/1 for bools internally. So all of the RelationalExpressions now return BasicType.Boolean.

This requires that any time a bool is used in a place that a number is required a conversion to double is required. Likewise, if a double is on the stack and we need a .NET bool a conversion is required. So almost every Node needed to be modified.

10 years agoAdded new tests.
Michael Welch [Thu, 28 Dec 2006 23:03:26 +0000 (23:03 +0000)] 
Added new tests.

10 years agoremoved labelAssigned field. It is not needed. It turns out I had a problem in Record...
Michael Welch [Thu, 28 Dec 2006 23:02:23 +0000 (23:02 +0000)] 
removed labelAssigned field. It is not needed. It turns out I had a problem in RecordLabels in For.cs which was causing the label for the For statement to not be recorded.

10 years agoI was emitting illegal IL for branching. The TI Basic relationsl expressions leave...
Michael Welch [Thu, 28 Dec 2006 23:01:11 +0000 (23:01 +0000)] 
I was emitting illegal IL for branching. The TI Basic relationsl expressions leave a double on the stack. I was using Brtrue and Brfalse which are defined to only work with int values. .NET must be more forgiving. It allowed such instructions to work (correctly, it seemed). However, these instructions did not work on mono.

10 years agoAdded column number to exception thrown in Match
Michael Welch [Thu, 28 Dec 2006 22:58:01 +0000 (22:58 +0000)] 
Added column number to exception thrown in Match

10 years agoRemoved the use of EmitCall thru out the project. It was originally used out of ignor...
Michael Welch [Thu, 28 Dec 2006 22:33:08 +0000 (22:33 +0000)] 
Removed the use of EmitCall thru out the project. It was originally used out of ignorance and I started to use Just Emit(OpCodes.Call ...) but there were 4 places where I was still using EmitCall. This caused problems under mono because it expects that you will only use EmitCall on methods that take optional parameters. .NET allows you to use it as long as you specify a zero length array of types which is what I had been doing. The fix allows it to run on .NET and mono

10 years agoAdded line number and column to exception thrown in Factor()
Michael Welch [Thu, 28 Dec 2006 22:30:01 +0000 (22:30 +0000)] 
Added line number and column to exception thrown in Factor()

10 years agoAdded support for lexing >= and <=
Michael Welch [Thu, 28 Dec 2006 22:29:20 +0000 (22:29 +0000)] 
Added support for lexing >= and <=

10 years agoSomehow the property svn:eol-sytle was attached to most of my .cs files. (Perhaps...
Michael Welch [Thu, 28 Dec 2006 20:30:59 +0000 (20:30 +0000)] 
Somehow the property svn:eol-sytle was attached to most of my .cs files. (Perhaps tortoise svn has some ability to do this that I set and forgot about. And when I originally set it, I made a typo?) Anway, I deleted the svn:eol-sytle properties and replaced them with svn:eol-style=native. I did this on all source files: *.cs, *.mbas, *.py

10 years agoAdded support for RESTORE statement. Also modified Lexer to be able to parse strings...
Michael Welch [Thu, 28 Dec 2006 19:38:28 +0000 (19:38 +0000)] 
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.

10 years agoAdded initial support for READ and DATA statements.
Michael Welch [Thu, 28 Dec 2006 04:08:03 +0000 (04:08 +0000)] 
Added initial support for READ and DATA statements.

Lexer.cs:
Added support for reading Data token. Also we need to switch "modes" when reading a DATA statement. A DATA statement can have non-quoted strings. So I added a variable "readingData" which indicates if we are reading a DATA statement or not. Also needed to modify NextString to be able to read quoted and non-quoted strings.

mbasic.csproj:
Added Read.cs and Data.cs and data.mbas (to samples).

Parser.cs:
Added support for parsing DATA and READ statements. Also the constructor for Parser now takes a List<object>. This list is used to collect all the items found in DATA statements.

Program.cs:
Reserved the words READ and DATA. Also created a List<object> instance to pass into Parser constructor. Add a region to emit the code to generate the static list of DATA used by the READ statements.

Data.cs:
Added. A shell of a statement. It never will show up in an AST but is used to
make the parser be able to deal with DATA statements. It is a singleton class.

Read.cs:
Added. Used to represent a READ statement in an AST.

Token.cs
Add Read and Data.

BuiltIns.cs:
Fixed a problem in PrintString that resulted in zero length strings leaving a print serperator in effect.

Added AddData method for adding all of the static DATA to a list. Added ReadDouble and ReadString methods for reading from the list. Added Restore method to support RESTORE statement.

samples: Added data.mbas for testing the scenarios in DATA section of guide.
Also added testData.py for checking the results of data.mbas.

10 years agoMoved all sample basic code into samples folder
Michael Welch [Wed, 27 Dec 2006 22:33:23 +0000 (22:33 +0000)] 
Moved all sample basic code into samples folder

10 years agoAdded full support for TAB function.
Michael Welch [Wed, 27 Dec 2006 22:24:02 +0000 (22:24 +0000)] 
Added full support for TAB function.

mbasic.csproj:
Added Tab.cs

Tab.cs:
Added. This node is used to represent a TAB(numeric expression).

Parser.cs:
Added support in parser for a TAB to specify any expression, not just a number constant.

print.mbas:
Added all of the print scenarios from User's Reference Guide.

Node.cs:
Removed some dead code.

BuiltIns.cs:
Fixed PrintTab. It was adding 1 too many spaces. Also removed some dead code.

10 years agoadded two test basic programs.
Michael Welch [Wed, 27 Dec 2006 21:45:20 +0000 (21:45 +0000)] 
added two test basic programs.

10 years agoRemoved a test project from solution file
Michael Welch [Wed, 27 Dec 2006 21:43:44 +0000 (21:43 +0000)] 
Removed a test project from solution file

10 years agoBuiltIns.cs:
Michael Welch [Wed, 27 Dec 2006 21:39:28 +0000 (21:39 +0000)] 
BuiltIns.cs:
Added Print method to match the specifications in User's Reference Guide.

Radix100.cs:
Removed leading and trailing spaces on ToString to support the specifications
for STR$. The trailing and leading spaces are added within Print routines.

TestRadix100.cs:
Updated ToString tests due to changes made in Radix100.

Lexer.cs:
Removed Label and LineNumber properties. Replaced with LineId property which contains both values. Added support for parsing ';' and ':' which are needed for PRINT statement.

mbasic.csproj:
Added LineId.cs

Parser.cs:
Added support for parsing print items in a PRINT statement. Also repurcussions due to remove Label and LineNumber from Lexer. Also repurcussions from requiring a LineId on constructor of every Statement and Expression subclass.

Program.cs:
When saving executable, the assembly, module and filenames are derived from input file name. Also reserved the word TAB.

Print.cs:

The rest of the files in SyntaxTree changed as a result to requring a LineID in the constructor rather than a line number, label, or both.

LineId.cs:
Added

10 years agoRadix100.cs:
Michael Welch [Wed, 27 Dec 2006 02:18:02 +0000 (02:18 +0000)] 
Radix100.cs:
Added Round, ToNormalDecimalForm, ToScientificForm methods. These methods give results exactly as required by the TI Basic specs for printing numbers.

Also, fixed Add method (adding zero, and handling carryover)

Print.cs:
Fixed it to use the new ToString method of Radix100 which uses the methods mentioned above.

10 years agoAdded GPL Header to End.cs
Michael Welch [Wed, 27 Dec 2006 02:15:15 +0000 (02:15 +0000)] 
Added GPL Header to End.cs

10 years agoFixed the MarkSequencePoints in the statements.
Michael Welch [Tue, 26 Dec 2006 03:45:03 +0000 (03:45 +0000)] 
Fixed the MarkSequencePoints in the statements.

Modified the relational operators so that they weren't quite as kludgy.

10 years agoInitial import. Moved from local svn repos to google hosting.
Michael Welch [Sun, 24 Dec 2006 06:25:45 +0000 (06:25 +0000)] 
Initial import. Moved from local svn repos to google hosting.