Thursday, August 8, 2013

New PRINT Implementation (Revised)

Once implementation of the new PRINT translation was started, I realized that the design at run-time was more complicated than it needed to be.  Most of the original design appeared to be best after all, with a few minor changes.  When it comes to run-time, the original design would be more efficient and would not need the extra complexity of a command stack.  With print codes immediately after each print item, the print code would simply pop the value from the evaluation stack and print it.

The changes to the original design are how semicolons and the final PRINT command code are handled.  Semicolon sub-codes were added to print functions codes except when they appeared at end of a statement.  Multiple semicolons were allowed, marked with semicolon sub-codes or extra semicolon tokens with more than one extra semicolons.  A PRINT command code would only be added to the end of the statement if there was no print token (semicolon, comma, TAB or SPC) at the end.

Semicolon sub-codes will no longer be needed.  Semicolons will be assumed between each print item unless there is a comma between them.  Multiple unnecessary semicolons will no long be permitted as these add nothing.  If there is a semicolon at the end of the line, then a semicolon code will be added to the end of the line instead of a PRINT code.  At run-time, the semicolon will no nothing, but when the line is recreated, the semicolon will produce the PRINT keyword in additional to the semicolon at the end of the line.