The N# Compiler is a compiler that reads N# code and outputs legal SmileBasic code. Its intention is to be an optional COMPLETE replacement for SmileBasic, as it contains the ability to do all that SB can do, plus more, easier.
N# is a multi-paradigm (Object-Oriented, Functional) language with extra capabilities that SB does not have (such as classes, lazy evaluation, higher-order functions, etc.). The compiler eliminates need for variable and function suffixes (the compiler handles them automatically) and improves syntax of existing commands (for example, C-style "for," "while," "if," etc). N# is not an extension of SB, but rather a total replacement. It is not the same language by any means.
All code must be in a function, and all functions should be in a class. If a function is not in a class, it will assume inheritance by the next occurring class. The compiler automatically runs "entry.main" at program start.
Here's the official discussion/help thread: http://smilebasicsource.com/forum?fpid=5814
[N# manual has not been published]
1: Set PRG:N_SHARP as your SmileTool.
2: Write your N# program in slot 0 of the editor.
3: When you're ready to compile, press the Smile button. Your program will compile and will appear in slot 1 of the editor. This new PRG file is in pure SB, so it can be loaded, saved, and published independent of any N# tools.
N# "Hello World" example:
static class entry
def public void main()
Console.Println "Hello World!"
As this is Beta, there are a few glitches I am aware of. However, almost all of these are crunched, and so the development should hopefully come out of beta soon.
*Changed array declaration syntax
*Fixed calculator example
*Assigning objects class references
*Completed object functionality
*MML and Graphics classes
*Class variables (private keyword doesn't work yet with these)
*Passing an object's value as a parameter works now
*Inline SB editor using [SB] tag in front of a line
* += and -= operators to work on objects
* /=, %=, *=, <<=, and >>= operators added
* % instead of MOD
*Console and Hardware class
*Immutable value types
*Basic array comprehension using [| and |]
*Compile code to a standalone PRG! (No more mandatory runtime compilation)
*Changed syntax of switch blocks ("end" is no longer required after each case, only at the very end)
*Changed compilation process of +=, -=, *=, /=, %=, <<=, and >>= (this does not affect the user)
*Removed runtime compiler
*Added progress bar to compilation
*Removed support for labels
*Partial sprite library
*By reference parameter passing
*Wildcard variable (equal to anything)
*Runs as SmileTool (much easier to use)
*Lambdas and higher-order functions
*Modified Sprite and MML classes
*Completed Sprite Library
Intended for use by experienced programmers.