-
beginFunction(type)
-
Tell the generator that we are beginning a function definition, so that we can ensure that returns have the right type.
Parameters:
Name |
Type |
Description |
type |
string
|
the return type of the function we are working on. |
- Source:
Returns:
void
-
cleanSlate()
-
Reset the internal object state to allow onject reuse when compiling a new program.
- Source:
Returns:
void
-
currentFunctionType() → {string}
-
Request the type of the current function definition.
- Source:
Returns:
-
Type
-
string
-
emit(code) → {number}
-
Write a value to the next available code word.
Parameters:
Name |
Type |
Description |
code |
*
|
the code word or data value to be written into the next slot. |
- Source:
Returns:
- the address which was just written to.
-
Type
-
number
-
endFunction()
-
Tell the generator that we are ending a function definition.
- Source:
Returns:
void
-
interpret(program)
-
Compile a Sketch program.
Parameters:
Name |
Type |
Description |
program |
Object
|
an AST object generated by the Jison parser. |
- Source:
Returns:
number[] - an array of opcodes and literals to be parsed by MVM.
-
interpretNode(node, opt) → {Object}
-
Interpret an AST node using the current code generator.
Parameters:
Name |
Type |
Description |
node |
Object
|
the AST node to be processed in the production of the current code store. |
opt |
*
|
an optional parameter to be passed to the individual node handler function. |
- Source:
Returns:
-
Type
-
Object
-
patch(addr, code)
-
Replace a code value at a given address.
Parameters:
Name |
Type |
Description |
addr |
number
|
the code address to be replaced. |
code |
*
|
the value to write to the code store. |
- Source:
Returns:
void
-
pc() → {number}
-
Return the current program counter value.
- Source:
Returns:
- the current program counter value.
-
Type
-
number
-
scopeLookup(label) → {Object}
-
Search for a reference to a label (a variable) within the program scope.
Parameters:
Name |
Type |
Description |
label |
string
|
the variable name to lookup. |
- Source:
Returns:
- an object detailing the height of the referenced label, its address and its type as well as any extra data.
-
Type
-
Object
-
scopePop(noEmit)
-
Pop off the current program scope frame.
Parameters:
Name |
Type |
Argument |
Default |
Description |
noEmit |
boolean
|
<optional>
|
false
|
specifies whether push and pop commands should not be written to the program as a side effect. This should be true for function definitions. |
- Source:
Returns:
void
-
scopePush(noEmit)
-
Push a new program scope frame.
Parameters:
Name |
Type |
Argument |
Default |
Description |
noEmit |
boolean
|
<optional>
|
false
|
specifies whether push and pop commands should not be written to the program as a side effect. This should be true for function definitions. |
- Source:
Returns:
void
-
scopeRegister(label, type, extra)
-
Register a label in the current scope frame.
Parameters:
Name |
Type |
Argument |
Description |
label |
string
|
|
the variable name to register. |
type |
string
|
|
the data type that the variable will be declared with. |
extra |
object
|
<optional>
|
any extra data that could be required when handling this label (for example, function definitions). |
- Source:
Returns:
void