2015-12-07 15:27:47 +09:00
|
|
|
# ssc
|
|
|
|
|
2015-12-07 15:56:54 +09:00
|
|
|
## Summary
|
2015-12-07 15:27:47 +09:00
|
|
|
|
2015-12-09 23:47:12 +09:00
|
|
|
_ssc_ is a basic, work-in-progress compiler for SunScript. It supports all of the byte-code functionality of Super Mario Sunshine's SPC interpreter.
|
|
|
|
The compiler compiles to the SPC binary format (.sb files) used by Super Mario Sunshine.
|
2015-12-07 15:27:47 +09:00
|
|
|
|
2015-12-09 23:47:12 +09:00
|
|
|
This program utilizes the [Grammatica](http://grammatica.percederberg.net/) library to generate an LL(k) parser using a grammar syntax file.
|
2015-12-07 15:27:47 +09:00
|
|
|
|
2015-12-07 15:56:54 +09:00
|
|
|
## Usage
|
2015-12-07 15:27:47 +09:00
|
|
|
|
2015-12-09 23:47:12 +09:00
|
|
|
To use _ssc_, create an instance of the `sunCompiler` class.
|
|
|
|
Use the `sunCompiler.Compile` or any of its overloads to compile a script:
|
2015-12-07 15:27:47 +09:00
|
|
|
|
2015-12-09 23:47:12 +09:00
|
|
|
|Parameter|Description|
|
|
|
|
|---------|-----------|
|
|
|
|
|`name`|The name of the main script to compile. This is passed to the import resolver.|
|
|
|
|
|`output`|The output stream into which the compiled binary file will be written.|
|
|
|
|
|`resolver`|An instance of the import resolver to use. If not specified, `sunImportResolver.Default` will be used.|
|
2015-12-07 15:27:47 +09:00
|
|
|
|
2015-12-09 23:47:12 +09:00
|
|
|
_ssc_ by default resolves imports by loading files on disk (see language.md for more information).
|
|
|
|
To use a custom import resolver, create a new class inheriting from `sunImportResolver` and pass an instance of it to the `
|
2015-12-07 15:27:47 +09:00
|
|
|
|
2015-12-09 23:47:12 +09:00
|
|
|
The result of compilation will be returned in a `sunCompilerResults` instance.
|
|
|
|
Use the various properties on this type to gather the information of the compilation:
|
2015-12-07 15:27:47 +09:00
|
|
|
|
2015-12-09 23:47:12 +09:00
|
|
|
|Property|Description|
|
|
|
|
|--------|-----------|
|
|
|
|
|`Success`|Whether the script was compiled successfully. If not, the `Error` property should be non-null.|
|
|
|
|
|`Error`|The fatal error which occured during compilation. If compilation was successful, this should be null.|
|
|
|
|
|`CompileTime`|The time it took to compile, measured as a `TimeSpan` instance.|
|
|
|
|
|`SymbolCount`|The total number of symbols (builtins, functions, and variables) created.|
|
|
|
|
|`BuiltinCount`|The total number of builtin symbols created.|
|
|
|
|
|`FunctionCount`|The total number of function symbols created.|
|
|
|
|
|`VariableCount`|The total number of global-scope variable symbols created.|
|
2015-12-07 15:27:47 +09:00
|
|
|
|
2015-12-09 23:47:12 +09:00
|
|
|
If the error is of the type `sunScriptException`, you can cast and retrieve the script name, line, and column of the error.
|
|
|
|
Compile` method.
|
2015-12-07 15:27:47 +09:00
|
|
|
|
2015-12-09 23:47:12 +09:00
|
|
|
## Language
|
2015-12-07 15:27:47 +09:00
|
|
|
|
2015-12-09 23:46:06 +09:00
|
|
|
For more information on the SunScript language and its syntax, see language.md.
|