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
Instructions:
[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:
use "Console"
static class entry
def public void main()
Console.Println "Hello World!"
end
end static
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.
Update List:
Beta v1.0:
*Original publication
Beta v1.1:
*Private functions
*Changed array declaration syntax
*Fixed calculator example
*Bug fixes
Beta 1.2
*Revamped objects
*Assigning objects class references
*Bug fixes
Beta 1.3
*Library importing
*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
*Bug fixes
Beta 1.4
* += and -= operators to work on objects
* /=, %=, *=, <<=, and >>= operators added
* % instead of MOD
*Console and Hardware class
*Class variables
*Immutable value types
*Foreach blocks
*Basic array comprehension using [| and |]
*Compile code to a standalone PRG! (No more mandatory runtime compilation)
*Bug fixes
Beta 1.5
*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
*App library
*Resource library
*Bug fixes
Beta 1.6
*By reference parameter passing
*Brace syntax
*Dictionary library
*Wildcard variable (equal to anything)
*Runs as SmileTool (much easier to use)
*Ignore command
*Lambdas and higher-order functions
*Bug Fixes
Beta 1.7
*Getter functions
*Setter functions
*Init functions
*Modified Sprite and MML classes
Beta 1.8
*Lazy evaluation
*eval() function
*BigInt library
Expected Updates:
Beta 1.9
*Completed Sprite Library
*Function overloading
*Bug Fixes
Notes:
Intended for use by experienced programmers.