ScriptStack 1.0.0
A .NET scripting language
|
The parser builds an ScriptStack.Runtime.Executable out of the Token stream returned from the ScriptStack.Compiler.Lexer while checking for correct syntax. Mehr ...
Klassen | |
struct | FunctionDescriptor |
struct | LoopControl |
struct | Variable |
Öffentliche Methoden | |
string | ToLiteral (string input) |
Parser (Script script, List< Token > tokenStream) | |
Executable | Parse () |
Parse the token stream into an executable. | |
Private Methoden | |
bool | More () |
Check if there are more tokens available. | |
Token | ReadToken () |
Get the next available token. | |
Token | LookAhead () |
Get the next available token without actually increasing the tokenstream index. | |
Token | LookAhead (int i) |
Get the token 'n' steps forward without actually increasing the tokenstream index. | |
void | UndoToken () |
If you read a token wrong, push it back so the stream stays intact. | |
bool | AssignmentOperator (TokenType tokenType) |
OpCode | AssignmentOpcode (TokenType tokenType) |
bool | RelationalOperator (TokenType tokenType) |
OpCode | RelationalOpcode (TokenType tokenType) |
Type | Literal (TokenType tokenType) |
Get the literal type of a token. | |
Type | Derivate (Token token, Type first, Type second) |
Get the resulting type of two computed types. | |
void | AllocateVariable (string identifier) |
Allocate a local variable. | |
void | AllocateFunctionFrame () |
Increase the function frame index. | |
string | AllocateTemporaryVariable () |
Add a temporary variable to the current function frames local memory. | |
void | FreeFunctionFrame () |
Decrease the function frame index. | |
void | ReadSemicolon () |
void | ReadComma () |
void | ReadLeftParenthesis () |
void | ReadRightParenthesis () |
void | ReadLeftBrace () |
void | ReadRightBrace () |
void | ReadLeftBracket () |
void | ReadRightBracket () |
void | ReadPeriod () |
void | InsertDebugInfo (Token token) |
string | ReadIdentifier () |
Read a new (previously NOT declared) identifier. | |
string | ExpectIdentifier () |
Read an expected (previously declared) identifier. | |
void | VariableDeclaration () |
Shared or local variable declaration. | |
Variable | StructDeclaration () |
In fact a struct by now is just an array with pre defined member names. It is stored at the scripts local memory. | |
Variable | EnumDeclaration () |
Enumeration stored in scripts local memory. | |
void | LocalVariableDeclaration () |
void | Run () |
Variable | RoutineCall () |
Variable | Pointer () |
Array access. | |
Variable | Member () |
Member access. | |
Variable | PreIncrement () |
Variable | PreDecrement () |
Variable | PostIncrement () |
Variable | PostDecrement () |
Variable | ShiftLeft () |
Variable | ShiftRight () |
Variable | BinaryAnd () |
Variable | BinaryOr () |
Variable | BinaryNotAssign () |
Variable | BinaryNot () |
Variable | Xor () |
Variable | Atom () |
The smallest unit. | |
Variable | BraceArray () |
An array enclosed in braces. | |
Variable | BracketArray () |
An array enclosed in brackets. | |
Variable | Factor () |
Atom | Array. | |
Variable | Term () |
Factor ( [*|/|%] Factor ) | |
Variable | Arithmetic () |
Multiplication and division before Addition and substraction. | |
Variable | Relation () |
Variable | Not () |
Proposition. | |
Variable | And () |
Conjunction. | |
Variable | Or () |
Disjunction (not exclusive) | |
Variable | VariableAssignment () |
Variable | ArrayAssignment () |
Variable | MemberAssignment () |
Variable | Assignment () |
An assignment can be a variable assignment, an array assignment or a member assignment. | |
bool | IsPointer () |
bool | IsMember () |
Variable | Expression () |
An expression is an assignment or a disjunction. | |
void | If () |
void | While () |
void | For () |
void | ForEach () |
void | Break () |
void | Continue () |
void | Switch () |
void | Return () |
By default null is returned. | |
void | FunctionDeclaration () |
Parameter variables are already set to true but not assigned yet. Pop all of them in reverse order onto the stack. | |
Variable | FunctionCall (bool background) |
Call a forward declared function Push all parameter identifier onto the stack and call the function/routine Only functions can run in background because routines are not translated! | |
Variable | FunctionCall () |
Can be a call to a forward declared Function or a Routine. To check what it is we look if it is a registered routine, if not it must be a function. | |
void | Statement () |
A statement can be a local variable declaration, a statement list, an expression or a keyword. | |
void | StatementList () |
A list of statements. If its not a list (not in braces) just return a single statement. | |
void | LockedStatementList () |
void | Yield () |
void | Wait () |
Wait for a locked secion of code to be freed. | |
void | Notify () |
void | ParseScript () |
After the first function declaration no more variable, struct or enum declarations are allowed anymore. | |
void | ResolveForwardFunctionDeclarations () |
Resolve unresolved, forward declared functions. | |
Private Attribute | |
Script | script |
bool | debugMode |
List< Token > | tokenStream |
int | nextToken |
Dictionary< string, bool > | variables |
Dictionary< string, bool > | localVariables |
int | functionFrameIndex |
Dictionary< Instruction, FunctionDescriptor > | forwardDeclarations |
Stack< LoopControl > | loopControl |
Derivation | derivation |
Executable | executable |
The parser builds an ScriptStack.Runtime.Executable out of the Token stream returned from the ScriptStack.Compiler.Lexer while checking for correct syntax.
The parser takes the output from the Lexer in the form of a Token stream and matches it against syntax rules to detect any errors. The output is an abstract syntax tree in form of Instruction's which can be executed by the ScriptStack.Runtime.Interpreter. More details are coming soon.
Not all methods are well documented yet but please be patient - i am working on it.
Benutzt ScriptStack.Compiler.Parser.debugMode, ScriptStack.Compiler.Parser.derivation, ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.forwardDeclarations, ScriptStack.Compiler.Parser.functionFrameIndex, ScriptStack.Compiler.Parser.localVariables, ScriptStack.Compiler.Parser.loopControl, ScriptStack.Compiler.Parser.nextToken, ScriptStack.Compiler.Parser.script, ScriptStack.Compiler.Parser.tokenStream und ScriptStack.Compiler.Parser.variables.
|
private |
Increase the function frame index.
Benutzt ScriptStack.Compiler.Parser.functionFrameIndex.
Wird benutzt von ScriptStack.Compiler.Parser.EnumDeclaration(), ScriptStack.Compiler.Parser.Statement() und ScriptStack.Compiler.Parser.StructDeclaration().
|
private |
Add a temporary variable to the current function frames local memory.
Benutzt ScriptStack.Compiler.Parser.functionFrameIndex, ScriptStack.Compiler.Parser.localVariables und ScriptStack.Compiler.Parser.variables.
Wird benutzt von ScriptStack.Compiler.Parser.ArrayAssignment(), ScriptStack.Compiler.Parser.Atom(), ScriptStack.Compiler.Parser.BraceArray(), ScriptStack.Compiler.Parser.BracketArray(), ScriptStack.Compiler.Parser.EnumDeclaration(), ScriptStack.Compiler.Parser.For(), ScriptStack.Compiler.Parser.ForEach(), ScriptStack.Compiler.Parser.FunctionCall(), ScriptStack.Compiler.Parser.Member(), ScriptStack.Compiler.Parser.MemberAssignment(), ScriptStack.Compiler.Parser.Pointer(), ScriptStack.Compiler.Parser.PostDecrement(), ScriptStack.Compiler.Parser.PostIncrement(), ScriptStack.Compiler.Parser.RoutineCall(), ScriptStack.Compiler.Parser.StructDeclaration(), ScriptStack.Compiler.Parser.Switch() und ScriptStack.Compiler.Parser.VariableAssignment().
|
private |
Allocate a local variable.
identifier |
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.localVariables, ScriptStack.Runtime.Operand.Variable() und ScriptStack.Compiler.Parser.variables.
Wird benutzt von ScriptStack.Compiler.Parser.FunctionDeclaration() und ScriptStack.Compiler.Parser.LocalVariableDeclaration().
|
private |
Conjunction.
Check for proposition (a signed atom)
Benutzt ScriptStack.Compiler.Parser.Derivate(), ScriptStack.Compiler.Parser.Variable.derivatedType, ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.Not(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type, ScriptStack.Compiler.Parser.UndoToken() und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Or().
|
private |
Multiplication and division before Addition and substraction.
Refer to https://en.wikipedia.org/wiki/Order_of_operations
Benutzt ScriptStack.Compiler.Parser.Derivate(), ScriptStack.Compiler.Parser.Variable.derivatedType, ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Parser.Term(), ScriptStack.Compiler.Token.Type, ScriptStack.Compiler.Parser.UndoToken(), ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Relation().
|
private |
Benutzt ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Compiler.Parser.AssignmentOpcode(), ScriptStack.Compiler.Parser.AssignmentOperator(), ScriptStack.Runtime.Operand.CreatePointer(), ScriptStack.Compiler.Parser.Variable.derivatedType, ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadLeftBracket(), ScriptStack.Compiler.Parser.ReadRightBracket(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type, ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Assignment().
|
private |
An assignment can be a variable assignment, an array assignment or a member assignment.
Benutzt ScriptStack.Compiler.Parser.ArrayAssignment(), ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.MemberAssignment(), ScriptStack.Compiler.Token.Type, ScriptStack.Compiler.Parser.UndoToken() und ScriptStack.Compiler.Parser.VariableAssignment().
Wird benutzt von ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.For() und ScriptStack.Compiler.Parser.LocalVariableDeclaration().
tokenType |
Wird benutzt von ScriptStack.Compiler.Parser.ArrayAssignment(), ScriptStack.Compiler.Parser.MemberAssignment() und ScriptStack.Compiler.Parser.VariableAssignment().
|
private |
tokenType |
Wird benutzt von ScriptStack.Compiler.Parser.ArrayAssignment(), ScriptStack.Compiler.Parser.IsMember(), ScriptStack.Compiler.Parser.IsPointer(), ScriptStack.Compiler.Parser.MemberAssignment() und ScriptStack.Compiler.Parser.VariableAssignment().
|
private |
The smallest unit.
Benutzt ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Compiler.Parser.Atom(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.FunctionCall(), ScriptStack.Compiler.Token.Lexeme, ScriptStack.Runtime.Literal, ScriptStack.Runtime.Operand.Literal(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.Member(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.Pointer(), ScriptStack.Compiler.Parser.PostDecrement(), ScriptStack.Compiler.Parser.PostIncrement(), ScriptStack.Compiler.Parser.PreDecrement(), ScriptStack.Compiler.Parser.PreIncrement(), ScriptStack.Compiler.Parser.ReadRightParenthesis(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Parser.ShiftLeft(), ScriptStack.Compiler.Parser.ShiftRight(), ScriptStack.Compiler.Token.Type, ScriptStack.Compiler.Parser.UndoToken(), ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Atom() und ScriptStack.Compiler.Parser.Factor().
|
private |
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.Factor(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
|
private |
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Factor(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
|
private |
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.Factor(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
|
private |
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.Factor(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
|
private |
An array enclosed in braces.
Benutzt ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Runtime.Operand.CreatePointer(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Runtime.Operand.MemberVariable(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadComma(), ScriptStack.Compiler.Parser.ReadLeftBrace(), ScriptStack.Compiler.Parser.ReadRightBrace(), ScriptStack.Compiler.Parser.ReadSemicolon(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type, ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Factor().
|
private |
An array enclosed in brackets.
Benutzt ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Runtime.Operand.CreatePointer(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Runtime.Operand.MemberVariable(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadComma(), ScriptStack.Compiler.Parser.ReadLeftBracket(), ScriptStack.Compiler.Parser.ReadRightBracket(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type, ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Factor().
|
private |
Benutzt ScriptStack.Runtime.Operand.AllocateInstructionPointer(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.loopControl, ScriptStack.Compiler.Parser.ReadSemicolon(), ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Token.Type.
Wird benutzt von ScriptStack.Compiler.Parser.Statement().
|
private |
Benutzt ScriptStack.Runtime.Operand.AllocateInstructionPointer(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.loopControl, ScriptStack.Compiler.Parser.ReadSemicolon(), ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Token.Type.
Wird benutzt von ScriptStack.Compiler.Parser.Statement().
|
private |
Get the resulting type of two computed types.
token | |
first | |
second |
Benutzt ScriptStack.Compiler.Parser.derivation.
Wird benutzt von ScriptStack.Compiler.Parser.And(), ScriptStack.Compiler.Parser.Arithmetic(), ScriptStack.Compiler.Parser.Or(), ScriptStack.Compiler.Parser.Relation() und ScriptStack.Compiler.Parser.Term().
|
private |
Enumeration stored in scripts local memory.
Benutzt ScriptStack.Runtime.ArrayList.Add(), ScriptStack.Compiler.Parser.AllocateFunctionFrame(), ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Runtime.Operand.CreatePointer(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.FreeFunctionFrame(), ScriptStack.Compiler.Parser.InsertDebugInfo(), ScriptStack.Compiler.Token.Lexeme, ScriptStack.Runtime.Operand.Literal(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.ReadComma(), ScriptStack.Compiler.Parser.ReadIdentifier(), ScriptStack.Compiler.Parser.ReadLeftBrace(), ScriptStack.Compiler.Parser.ReadRightBrace(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Runtime.Executable.ScriptMemory, ScriptStack.Compiler.Token.Type, ScriptStack.Compiler.Parser.UndoToken(), ScriptStack.Runtime.Variable, ScriptStack.Runtime.Operand.Variable() und ScriptStack.Compiler.Parser.variables.
Wird benutzt von ScriptStack.Compiler.Parser.ParseScript().
|
private |
Read an expected (previously declared) identifier.
Benutzt ScriptStack.Compiler.Token.Lexeme, ScriptStack.Compiler.Parser.localVariables, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type und ScriptStack.Compiler.Parser.variables.
Wird benutzt von ScriptStack.Compiler.Parser.ArrayAssignment(), ScriptStack.Compiler.Parser.Assignment(), ScriptStack.Compiler.Parser.Atom(), ScriptStack.Compiler.Parser.BinaryAnd(), ScriptStack.Compiler.Parser.BinaryNotAssign(), ScriptStack.Compiler.Parser.BinaryOr(), ScriptStack.Compiler.Parser.ForEach(), ScriptStack.Compiler.Parser.MemberAssignment(), ScriptStack.Compiler.Parser.Notify(), ScriptStack.Compiler.Parser.PostDecrement(), ScriptStack.Compiler.Parser.PostIncrement(), ScriptStack.Compiler.Parser.PreDecrement(), ScriptStack.Compiler.Parser.PreIncrement(), ScriptStack.Compiler.Parser.ShiftLeft(), ScriptStack.Compiler.Parser.ShiftRight(), ScriptStack.Compiler.Parser.Switch(), ScriptStack.Compiler.Parser.VariableAssignment(), ScriptStack.Compiler.Parser.Wait() und ScriptStack.Compiler.Parser.Xor().
|
private |
An expression is an assignment or a disjunction.
Benutzt ScriptStack.Compiler.Parser.Assignment(), ScriptStack.Compiler.Parser.IsMember(), ScriptStack.Compiler.Parser.IsPointer() und ScriptStack.Compiler.Parser.Or().
Wird benutzt von ScriptStack.Compiler.Parser.ArrayAssignment(), ScriptStack.Compiler.Parser.Atom(), ScriptStack.Compiler.Parser.BraceArray(), ScriptStack.Compiler.Parser.BracketArray(), ScriptStack.Compiler.Parser.For(), ScriptStack.Compiler.Parser.ForEach(), ScriptStack.Compiler.Parser.FunctionCall(), ScriptStack.Compiler.Parser.If(), ScriptStack.Compiler.Parser.IsPointer(), ScriptStack.Compiler.Parser.LockedStatementList(), ScriptStack.Compiler.Parser.MemberAssignment(), ScriptStack.Compiler.Parser.Not(), ScriptStack.Compiler.Parser.Pointer(), ScriptStack.Compiler.Parser.Return(), ScriptStack.Compiler.Parser.RoutineCall(), ScriptStack.Compiler.Parser.Statement(), ScriptStack.Compiler.Parser.Switch(), ScriptStack.Compiler.Parser.VariableAssignment() und ScriptStack.Compiler.Parser.While().
|
private |
Atom | Array.
Benutzt ScriptStack.Compiler.Parser.Atom(), ScriptStack.Compiler.Parser.BraceArray(), ScriptStack.Compiler.Parser.BracketArray() und ScriptStack.Compiler.Parser.LookAhead().
Wird benutzt von ScriptStack.Compiler.Parser.BinaryAnd(), ScriptStack.Compiler.Parser.BinaryNot(), ScriptStack.Compiler.Parser.BinaryNotAssign(), ScriptStack.Compiler.Parser.BinaryOr(), ScriptStack.Compiler.Parser.ShiftLeft(), ScriptStack.Compiler.Parser.ShiftRight(), ScriptStack.Compiler.Parser.Term() und ScriptStack.Compiler.Parser.Xor().
|
private |
Benutzt ScriptStack.Runtime.Operand.AllocateInstructionPointer(), ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Compiler.Parser.Assignment(), ScriptStack.Compiler.Parser.Variable.derivatedType, ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Expression(), ScriptStack.Runtime.Operand.Literal(), ScriptStack.Compiler.Parser.LocalVariableDeclaration(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.loopControl, ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadLeftParenthesis(), ScriptStack.Compiler.Parser.ReadRightParenthesis(), ScriptStack.Compiler.Parser.ReadSemicolon(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Parser.StatementList(), ScriptStack.Compiler.Token.Type, ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Statement().
|
private |
Benutzt ScriptStack.Runtime.Operand.AllocateInstructionPointer(), ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Runtime.Operand.CreatePointer(), ScriptStack.Compiler.Parser.Variable.derivatedType, ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.Expression(), ScriptStack.Runtime.Operand.Literal(), ScriptStack.Compiler.Parser.loopControl, ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadLeftParenthesis(), ScriptStack.Compiler.Parser.ReadRightParenthesis(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Parser.StatementList(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Statement().
|
private |
Decrease the function frame index.
Benutzt ScriptStack.Compiler.Parser.functionFrameIndex und ScriptStack.Compiler.Parser.localVariables.
Wird benutzt von ScriptStack.Compiler.Parser.EnumDeclaration(), ScriptStack.Compiler.Parser.Statement() und ScriptStack.Compiler.Parser.StructDeclaration().
|
private |
Can be a call to a forward declared Function or a Routine. To check what it is we look if it is a registered routine, if not it must be a function.
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.FunctionCall(), ScriptStack.Manager.IsRegistered(), ScriptStack.Runtime.Script.Manager, ScriptStack.Compiler.Parser.ReadIdentifier(), ScriptStack.Compiler.Parser.RoutineCall(), ScriptStack.Runtime.Executable.Script und ScriptStack.Compiler.Parser.UndoToken().
Wird benutzt von ScriptStack.Compiler.Parser.Atom(), ScriptStack.Compiler.Parser.FunctionCall() und ScriptStack.Compiler.Parser.Run().
|
private |
Call a forward declared function Push all parameter identifier onto the stack and call the function/routine Only functions can run in background because routines are not translated!
background |
Benutzt ScriptStack.Runtime.Operand.AllocateFunctionPointer(), ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.forwardDeclarations, ScriptStack.Runtime.Executable.Functions, ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadComma(), ScriptStack.Compiler.Parser.ReadIdentifier(), ScriptStack.Compiler.Parser.ReadLeftParenthesis(), ScriptStack.Compiler.Parser.ReadRightParenthesis(), ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
|
private |
Parameter variables are already set to true but not assigned yet. Pop all of them in reverse order onto the stack.
Benutzt ScriptStack.Compiler.Parser.AllocateVariable(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Function, ScriptStack.Runtime.Executable.Functions, ScriptStack.Compiler.Parser.InsertDebugInfo(), ScriptStack.Compiler.Token.Lexeme, ScriptStack.Runtime.Operand.Literal(), ScriptStack.Compiler.Parser.localVariables, ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.ReadComma(), ScriptStack.Compiler.Parser.ReadIdentifier(), ScriptStack.Compiler.Parser.ReadLeftParenthesis(), ScriptStack.Compiler.Parser.ReadRightParenthesis(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Parser.StatementList(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.ParseScript().
|
private |
Benutzt ScriptStack.Runtime.Operand.AllocateInstructionPointer(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadLeftParenthesis(), ScriptStack.Compiler.Parser.ReadRightParenthesis(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Parser.StatementList(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Statement().
|
private |
Benutzt ScriptStack.Compiler.Parser.debugMode, ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Token.Line, ScriptStack.Runtime.Operand.Literal() und ScriptStack.Compiler.Token.Text.
Wird benutzt von ScriptStack.Compiler.Parser.EnumDeclaration(), ScriptStack.Compiler.Parser.FunctionDeclaration(), ScriptStack.Compiler.Parser.Statement(), ScriptStack.Compiler.Parser.StructDeclaration(), ScriptStack.Compiler.Parser.Switch() und ScriptStack.Compiler.Parser.VariableDeclaration().
|
private |
Benutzt ScriptStack.Compiler.Parser.AssignmentOperator(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.ReadIdentifier(), ScriptStack.Compiler.Parser.ReadPeriod(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type und ScriptStack.Compiler.Parser.UndoToken().
Wird benutzt von ScriptStack.Compiler.Parser.Expression().
|
private |
Benutzt ScriptStack.Compiler.Parser.AssignmentOperator(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.ReadIdentifier(), ScriptStack.Compiler.Parser.ReadLeftBracket(), ScriptStack.Compiler.Parser.ReadRightBracket(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type und ScriptStack.Compiler.Parser.UndoToken().
Wird benutzt von ScriptStack.Compiler.Parser.Expression().
|
private |
Get the literal type of a token.
tokenType |
|
private |
Benutzt ScriptStack.Compiler.Parser.AllocateVariable(), ScriptStack.Compiler.Parser.Assignment(), ScriptStack.Compiler.Parser.ReadIdentifier(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type und ScriptStack.Compiler.Parser.UndoToken().
Wird benutzt von ScriptStack.Compiler.Parser.For() und ScriptStack.Compiler.Parser.Statement().
|
private |
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Parser.Statement(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Statement().
|
private |
Get the next available token without actually increasing the tokenstream index.
Benutzt ScriptStack.Compiler.Parser.More(), ScriptStack.Compiler.Parser.nextToken und ScriptStack.Compiler.Parser.tokenStream.
Wird benutzt von ScriptStack.Compiler.Parser.ArrayAssignment(), ScriptStack.Compiler.Parser.Assignment(), ScriptStack.Compiler.Parser.Atom(), ScriptStack.Compiler.Parser.BraceArray(), ScriptStack.Compiler.Parser.BracketArray(), ScriptStack.Compiler.Parser.EnumDeclaration(), ScriptStack.Compiler.Parser.Factor(), ScriptStack.Compiler.Parser.For(), ScriptStack.Compiler.Parser.FunctionCall(), ScriptStack.Compiler.Parser.FunctionDeclaration(), ScriptStack.Compiler.Parser.If(), ScriptStack.Compiler.Parser.IsMember(), ScriptStack.Compiler.Parser.IsPointer(), ScriptStack.Compiler.Parser.Member(), ScriptStack.Compiler.Parser.MemberAssignment(), ScriptStack.Compiler.Parser.Not(), ScriptStack.Compiler.Parser.ParseScript(), ScriptStack.Compiler.Parser.Pointer(), ScriptStack.Compiler.Parser.Return(), ScriptStack.Compiler.Parser.RoutineCall(), ScriptStack.Compiler.Parser.Statement(), ScriptStack.Compiler.Parser.StatementList(), ScriptStack.Compiler.Parser.StructDeclaration() und ScriptStack.Compiler.Parser.Switch().
|
private |
Get the token 'n' steps forward without actually increasing the tokenstream index.
i |
Benutzt ScriptStack.Compiler.Parser.More(), ScriptStack.Compiler.Parser.nextToken und ScriptStack.Compiler.Parser.tokenStream.
|
private |
Member access.
Benutzt ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Runtime.Operand.MemberVariable(), ScriptStack.Compiler.Parser.ReadIdentifier(), ScriptStack.Compiler.Parser.ReadPeriod(), ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Atom().
|
private |
Benutzt ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Compiler.Parser.AssignmentOpcode(), ScriptStack.Compiler.Parser.AssignmentOperator(), ScriptStack.Compiler.Parser.Variable.derivatedType, ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Runtime.Operand.MemberVariable(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadIdentifier(), ScriptStack.Compiler.Parser.ReadPeriod(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type, ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Assignment().
|
private |
Check if there are more tokens available.
Benutzt ScriptStack.Compiler.Parser.nextToken und ScriptStack.Compiler.Parser.tokenStream.
Wird benutzt von ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.ParseScript() und ScriptStack.Compiler.Parser.ReadToken().
|
private |
Proposition.
May be a signed atom or a relation
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Parser.Relation(), ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.And().
|
private |
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Runtime.Operand.Literal(), ScriptStack.Compiler.Parser.ReadSemicolon(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Statement().
|
private |
Disjunction (not exclusive)
Check for conjunction
Benutzt ScriptStack.Compiler.Parser.And(), ScriptStack.Compiler.Parser.Derivate(), ScriptStack.Compiler.Parser.Variable.derivatedType, ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type, ScriptStack.Compiler.Parser.UndoToken() und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Expression().
Executable ScriptStack.Compiler.Parser.Parse | ( | ) |
Parse the token stream into an executable.
Benutzt ScriptStack.Runtime.Executable.Clean(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.forwardDeclarations, ScriptStack.Compiler.Parser.functionFrameIndex, ScriptStack.Compiler.Parser.localVariables, ScriptStack.Compiler.Parser.loopControl, ScriptStack.Compiler.Parser.nextToken, ScriptStack.Compiler.Parser.ParseScript(), ScriptStack.Compiler.Parser.ResolveForwardFunctionDeclarations(), ScriptStack.Compiler.Parser.script und ScriptStack.Compiler.Parser.variables.
|
private |
After the first function declaration no more variable, struct or enum declarations are allowed anymore.
Benutzt ScriptStack.Compiler.Parser.EnumDeclaration(), ScriptStack.Compiler.Parser.FunctionDeclaration(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.More(), ScriptStack.Compiler.Parser.StructDeclaration(), ScriptStack.Compiler.Token.Type und ScriptStack.Compiler.Parser.VariableDeclaration().
Wird benutzt von ScriptStack.Compiler.Parser.Parse().
|
private |
Array access.
like
Benutzt ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Runtime.Operand.CreatePointer(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadIdentifier(), ScriptStack.Compiler.Parser.ReadLeftBracket(), ScriptStack.Compiler.Parser.ReadRightBracket(), ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Atom().
|
private |
Benutzt ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type, ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Atom().
|
private |
Benutzt ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type, ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Atom().
|
private |
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type, ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Atom().
|
private |
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type, ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Atom().
|
private |
Benutzt ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Token.Type.
Wird benutzt von ScriptStack.Compiler.Parser.BraceArray(), ScriptStack.Compiler.Parser.BracketArray(), ScriptStack.Compiler.Parser.EnumDeclaration(), ScriptStack.Compiler.Parser.FunctionCall(), ScriptStack.Compiler.Parser.FunctionDeclaration(), ScriptStack.Compiler.Parser.RoutineCall() und ScriptStack.Compiler.Parser.StructDeclaration().
|
private |
Read a new (previously NOT declared) identifier.
Benutzt ScriptStack.Compiler.Token.Lexeme, ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Token.Type.
Wird benutzt von ScriptStack.Compiler.Parser.EnumDeclaration(), ScriptStack.Compiler.Parser.FunctionCall(), ScriptStack.Compiler.Parser.FunctionCall(), ScriptStack.Compiler.Parser.FunctionDeclaration(), ScriptStack.Compiler.Parser.IsMember(), ScriptStack.Compiler.Parser.IsPointer(), ScriptStack.Compiler.Parser.LocalVariableDeclaration(), ScriptStack.Compiler.Parser.Member(), ScriptStack.Compiler.Parser.MemberAssignment(), ScriptStack.Compiler.Parser.Pointer(), ScriptStack.Compiler.Parser.RoutineCall(), ScriptStack.Compiler.Parser.StructDeclaration() und ScriptStack.Compiler.Parser.VariableDeclaration().
|
private |
Benutzt ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Token.Type.
Wird benutzt von ScriptStack.Compiler.Parser.BraceArray(), ScriptStack.Compiler.Parser.EnumDeclaration(), ScriptStack.Compiler.Parser.StructDeclaration() und ScriptStack.Compiler.Parser.Switch().
|
private |
Benutzt ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Token.Type.
Wird benutzt von ScriptStack.Compiler.Parser.ArrayAssignment(), ScriptStack.Compiler.Parser.BracketArray(), ScriptStack.Compiler.Parser.IsPointer() und ScriptStack.Compiler.Parser.Pointer().
|
private |
Benutzt ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Token.Type.
Wird benutzt von ScriptStack.Compiler.Parser.For(), ScriptStack.Compiler.Parser.ForEach(), ScriptStack.Compiler.Parser.FunctionCall(), ScriptStack.Compiler.Parser.FunctionDeclaration(), ScriptStack.Compiler.Parser.If(), ScriptStack.Compiler.Parser.RoutineCall(), ScriptStack.Compiler.Parser.Switch() und ScriptStack.Compiler.Parser.While().
|
private |
Benutzt ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Token.Type.
Wird benutzt von ScriptStack.Compiler.Parser.IsMember(), ScriptStack.Compiler.Parser.Member() und ScriptStack.Compiler.Parser.MemberAssignment().
|
private |
Benutzt ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Token.Type.
Wird benutzt von ScriptStack.Compiler.Parser.BraceArray(), ScriptStack.Compiler.Parser.EnumDeclaration(), ScriptStack.Compiler.Parser.StatementList(), ScriptStack.Compiler.Parser.StructDeclaration() und ScriptStack.Compiler.Parser.Switch().
|
private |
Benutzt ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Token.Type.
Wird benutzt von ScriptStack.Compiler.Parser.ArrayAssignment(), ScriptStack.Compiler.Parser.BracketArray(), ScriptStack.Compiler.Parser.IsPointer() und ScriptStack.Compiler.Parser.Pointer().
|
private |
Benutzt ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Token.Type.
Wird benutzt von ScriptStack.Compiler.Parser.Atom(), ScriptStack.Compiler.Parser.For(), ScriptStack.Compiler.Parser.ForEach(), ScriptStack.Compiler.Parser.FunctionCall(), ScriptStack.Compiler.Parser.FunctionDeclaration(), ScriptStack.Compiler.Parser.If(), ScriptStack.Compiler.Parser.RoutineCall(), ScriptStack.Compiler.Parser.Switch() und ScriptStack.Compiler.Parser.While().
|
private |
Benutzt ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Token.Type.
Wird benutzt von ScriptStack.Compiler.Parser.BraceArray(), ScriptStack.Compiler.Parser.Break(), ScriptStack.Compiler.Parser.Continue(), ScriptStack.Compiler.Parser.For(), ScriptStack.Compiler.Parser.Notify(), ScriptStack.Compiler.Parser.Return(), ScriptStack.Compiler.Parser.Run(), ScriptStack.Compiler.Parser.Statement(), ScriptStack.Compiler.Parser.Wait() und ScriptStack.Compiler.Parser.Yield().
|
private |
Get the next available token.
Benutzt ScriptStack.Compiler.Parser.More(), ScriptStack.Compiler.Parser.nextToken und ScriptStack.Compiler.Parser.tokenStream.
Wird benutzt von ScriptStack.Compiler.Parser.And(), ScriptStack.Compiler.Parser.Arithmetic(), ScriptStack.Compiler.Parser.ArrayAssignment(), ScriptStack.Compiler.Parser.Atom(), ScriptStack.Compiler.Parser.BinaryAnd(), ScriptStack.Compiler.Parser.BinaryNot(), ScriptStack.Compiler.Parser.BinaryNotAssign(), ScriptStack.Compiler.Parser.BinaryOr(), ScriptStack.Compiler.Parser.BraceArray(), ScriptStack.Compiler.Parser.BracketArray(), ScriptStack.Compiler.Parser.Break(), ScriptStack.Compiler.Parser.Continue(), ScriptStack.Compiler.Parser.EnumDeclaration(), ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.For(), ScriptStack.Compiler.Parser.ForEach(), ScriptStack.Compiler.Parser.FunctionDeclaration(), ScriptStack.Compiler.Parser.If(), ScriptStack.Compiler.Parser.IsMember(), ScriptStack.Compiler.Parser.IsPointer(), ScriptStack.Compiler.Parser.LocalVariableDeclaration(), ScriptStack.Compiler.Parser.LockedStatementList(), ScriptStack.Compiler.Parser.MemberAssignment(), ScriptStack.Compiler.Parser.Not(), ScriptStack.Compiler.Parser.Notify(), ScriptStack.Compiler.Parser.Or(), ScriptStack.Compiler.Parser.PostDecrement(), ScriptStack.Compiler.Parser.PostIncrement(), ScriptStack.Compiler.Parser.PreDecrement(), ScriptStack.Compiler.Parser.PreIncrement(), ScriptStack.Compiler.Parser.ReadComma(), ScriptStack.Compiler.Parser.ReadIdentifier(), ScriptStack.Compiler.Parser.ReadLeftBrace(), ScriptStack.Compiler.Parser.ReadLeftBracket(), ScriptStack.Compiler.Parser.ReadLeftParenthesis(), ScriptStack.Compiler.Parser.ReadPeriod(), ScriptStack.Compiler.Parser.ReadRightBrace(), ScriptStack.Compiler.Parser.ReadRightBracket(), ScriptStack.Compiler.Parser.ReadRightParenthesis(), ScriptStack.Compiler.Parser.ReadSemicolon(), ScriptStack.Compiler.Parser.Relation(), ScriptStack.Compiler.Parser.Return(), ScriptStack.Compiler.Parser.Run(), ScriptStack.Compiler.Parser.ShiftLeft(), ScriptStack.Compiler.Parser.ShiftRight(), ScriptStack.Compiler.Parser.Statement(), ScriptStack.Compiler.Parser.StatementList(), ScriptStack.Compiler.Parser.StructDeclaration(), ScriptStack.Compiler.Parser.Switch(), ScriptStack.Compiler.Parser.Term(), ScriptStack.Compiler.Parser.VariableAssignment(), ScriptStack.Compiler.Parser.VariableDeclaration(), ScriptStack.Compiler.Parser.Wait(), ScriptStack.Compiler.Parser.While(), ScriptStack.Compiler.Parser.Xor() und ScriptStack.Compiler.Parser.Yield().
|
private |
Benutzt ScriptStack.Compiler.Parser.Arithmetic(), ScriptStack.Compiler.Parser.Derivate(), ScriptStack.Compiler.Parser.Variable.derivatedType, ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Parser.RelationalOpcode(), ScriptStack.Compiler.Parser.RelationalOperator(), ScriptStack.Compiler.Token.Type, ScriptStack.Compiler.Parser.UndoToken() und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Not().
tokenType |
Wird benutzt von ScriptStack.Compiler.Parser.Relation().
|
private |
tokenType |
Wird benutzt von ScriptStack.Compiler.Parser.Relation().
|
private |
Resolve unresolved, forward declared functions.
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.forwardDeclarations, ScriptStack.Runtime.Executable.Functions und ScriptStack.Compiler.Parser.FunctionDescriptor.name.
Wird benutzt von ScriptStack.Compiler.Parser.Parse().
|
private |
By default null is returned.
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Expression(), ScriptStack.Runtime.Operand.Literal(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.ReadSemicolon(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Statement().
|
private |
Benutzt ScriptStack.Runtime.Operand.AllocateRoutinePointer(), ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Runtime.Routine.Description(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Runtime.Script.Manager, ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Runtime.Routine.ParameterTypes, ScriptStack.Compiler.Parser.ReadComma(), ScriptStack.Compiler.Parser.ReadIdentifier(), ScriptStack.Compiler.Parser.ReadLeftParenthesis(), ScriptStack.Compiler.Parser.ReadRightParenthesis(), ScriptStack.Manager.Routines, ScriptStack.Runtime.Executable.Script und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.FunctionCall().
|
private |
Benutzt ScriptStack.Compiler.Parser.FunctionCall(), ScriptStack.Compiler.Parser.ReadSemicolon(), ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Token.Type.
Wird benutzt von ScriptStack.Compiler.Parser.Statement().
|
private |
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.Factor(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Atom().
|
private |
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.Factor(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Atom().
|
private |
A statement can be a local variable declaration, a statement list, an expression or a keyword.
Benutzt ScriptStack.Compiler.Parser.AllocateFunctionFrame(), ScriptStack.Compiler.Parser.Break(), ScriptStack.Compiler.Parser.Continue(), ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.For(), ScriptStack.Compiler.Parser.ForEach(), ScriptStack.Compiler.Parser.FreeFunctionFrame(), ScriptStack.Compiler.Parser.If(), ScriptStack.Compiler.Parser.InsertDebugInfo(), ScriptStack.Compiler.Token.Lexeme, ScriptStack.Compiler.Parser.LocalVariableDeclaration(), ScriptStack.Compiler.Parser.LockedStatementList(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.Notify(), ScriptStack.Compiler.Parser.ReadSemicolon(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Parser.Return(), ScriptStack.Compiler.Parser.Run(), ScriptStack.Compiler.Parser.StatementList(), ScriptStack.Compiler.Parser.Switch(), ScriptStack.Compiler.Token.Type, ScriptStack.Compiler.Parser.Wait(), ScriptStack.Compiler.Parser.While() und ScriptStack.Compiler.Parser.Yield().
Wird benutzt von ScriptStack.Compiler.Parser.LockedStatementList(), ScriptStack.Compiler.Parser.StatementList() und ScriptStack.Compiler.Parser.Switch().
|
private |
A list of statements. If its not a list (not in braces) just return a single statement.
Benutzt ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.ReadRightBrace(), ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Parser.Statement().
Wird benutzt von ScriptStack.Compiler.Parser.For(), ScriptStack.Compiler.Parser.ForEach(), ScriptStack.Compiler.Parser.FunctionDeclaration(), ScriptStack.Compiler.Parser.If(), ScriptStack.Compiler.Parser.Statement() und ScriptStack.Compiler.Parser.While().
|
private |
In fact a struct by now is just an array with pre defined member names. It is stored at the scripts local memory.
Benutzt ScriptStack.Runtime.ArrayList.Add(), ScriptStack.Compiler.Parser.AllocateFunctionFrame(), ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Runtime.Operand.CreatePointer(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.FreeFunctionFrame(), ScriptStack.Compiler.Parser.InsertDebugInfo(), ScriptStack.Compiler.Token.Lexeme, ScriptStack.Runtime.Operand.Literal(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.ReadComma(), ScriptStack.Compiler.Parser.ReadIdentifier(), ScriptStack.Compiler.Parser.ReadLeftBrace(), ScriptStack.Compiler.Parser.ReadRightBrace(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Runtime.Executable.ScriptMemory, ScriptStack.Compiler.Token.Type, ScriptStack.Compiler.Parser.UndoToken(), ScriptStack.Runtime.Variable, ScriptStack.Runtime.Operand.Variable() und ScriptStack.Compiler.Parser.variables.
Wird benutzt von ScriptStack.Compiler.Parser.ParseScript().
|
private |
Benutzt ScriptStack.Runtime.Operand.AllocateInstructionPointer(), ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.InsertDebugInfo(), ScriptStack.Runtime.Operand.Literal(), ScriptStack.Compiler.Parser.LookAhead(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadLeftBrace(), ScriptStack.Compiler.Parser.ReadLeftParenthesis(), ScriptStack.Compiler.Parser.ReadRightBrace(), ScriptStack.Compiler.Parser.ReadRightParenthesis(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Parser.Statement(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Statement().
|
private |
Factor ( [*|/|%] Factor )
Benutzt ScriptStack.Compiler.Parser.Derivate(), ScriptStack.Compiler.Parser.Variable.derivatedType, ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Factor(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type, ScriptStack.Compiler.Parser.UndoToken(), ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Arithmetic().
string ScriptStack.Compiler.Parser.ToLiteral | ( | string | input | ) |
|
private |
If you read a token wrong, push it back so the stream stays intact.
Benutzt ScriptStack.Compiler.Parser.nextToken.
Wird benutzt von ScriptStack.Compiler.Parser.And(), ScriptStack.Compiler.Parser.Arithmetic(), ScriptStack.Compiler.Parser.Assignment(), ScriptStack.Compiler.Parser.Atom(), ScriptStack.Compiler.Parser.EnumDeclaration(), ScriptStack.Compiler.Parser.FunctionCall(), ScriptStack.Compiler.Parser.IsMember(), ScriptStack.Compiler.Parser.IsPointer(), ScriptStack.Compiler.Parser.LocalVariableDeclaration(), ScriptStack.Compiler.Parser.Or(), ScriptStack.Compiler.Parser.Relation(), ScriptStack.Compiler.Parser.StructDeclaration() und ScriptStack.Compiler.Parser.Term().
|
private |
Benutzt ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Compiler.Parser.AssignmentOpcode(), ScriptStack.Compiler.Parser.AssignmentOperator(), ScriptStack.Compiler.Parser.Variable.derivatedType, ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type, ScriptStack.Runtime.Variable und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Assignment().
|
private |
Shared or local variable declaration.
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.InsertDebugInfo(), ScriptStack.Runtime.Script.Manager, ScriptStack.Compiler.Parser.ReadIdentifier(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Parser.script, ScriptStack.Runtime.Executable.ScriptMemory, ScriptStack.Manager.SharedMemory, ScriptStack.Compiler.Token.Type, ScriptStack.Runtime.Operand.Variable() und ScriptStack.Compiler.Parser.variables.
Wird benutzt von ScriptStack.Compiler.Parser.ParseScript().
|
private |
Wait for a locked secion of code to be freed.
Benutzt ScriptStack.Runtime.Operand.AllocateInstructionPointer(), ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.ReadSemicolon(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Statement().
|
private |
Benutzt ScriptStack.Runtime.Operand.AllocateInstructionPointer(), ScriptStack.Compiler.Parser.Variable.derivatedType, ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.Expression(), ScriptStack.Compiler.Parser.loopControl, ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadLeftParenthesis(), ScriptStack.Compiler.Parser.ReadRightParenthesis(), ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Parser.StatementList(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
Wird benutzt von ScriptStack.Compiler.Parser.Statement().
|
private |
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.Factor(), ScriptStack.Compiler.Parser.Variable.name, ScriptStack.Compiler.Parser.ReadToken(), ScriptStack.Compiler.Token.Type und ScriptStack.Runtime.Operand.Variable().
|
private |
Benutzt ScriptStack.Compiler.Parser.executable, ScriptStack.Compiler.Parser.ReadSemicolon(), ScriptStack.Compiler.Parser.ReadToken() und ScriptStack.Compiler.Token.Type.
Wird benutzt von ScriptStack.Compiler.Parser.Statement().
|
private |
Wird benutzt von ScriptStack.Compiler.Parser.InsertDebugInfo() und ScriptStack.Compiler.Parser.Parser().
|
private |
Wird benutzt von ScriptStack.Compiler.Parser.Derivate() und ScriptStack.Compiler.Parser.Parser().
|
private |
Wird benutzt von ScriptStack.Compiler.Parser.AllocateVariable(), ScriptStack.Compiler.Parser.And(), ScriptStack.Compiler.Parser.Arithmetic(), ScriptStack.Compiler.Parser.ArrayAssignment(), ScriptStack.Compiler.Parser.Atom(), ScriptStack.Compiler.Parser.BinaryAnd(), ScriptStack.Compiler.Parser.BinaryNot(), ScriptStack.Compiler.Parser.BinaryNotAssign(), ScriptStack.Compiler.Parser.BinaryOr(), ScriptStack.Compiler.Parser.BraceArray(), ScriptStack.Compiler.Parser.BracketArray(), ScriptStack.Compiler.Parser.Break(), ScriptStack.Compiler.Parser.Continue(), ScriptStack.Compiler.Parser.EnumDeclaration(), ScriptStack.Compiler.Parser.For(), ScriptStack.Compiler.Parser.ForEach(), ScriptStack.Compiler.Parser.FunctionCall(), ScriptStack.Compiler.Parser.FunctionCall(), ScriptStack.Compiler.Parser.FunctionDeclaration(), ScriptStack.Compiler.Parser.If(), ScriptStack.Compiler.Parser.InsertDebugInfo(), ScriptStack.Compiler.Parser.IsPointer(), ScriptStack.Compiler.Parser.LockedStatementList(), ScriptStack.Compiler.Parser.Member(), ScriptStack.Compiler.Parser.MemberAssignment(), ScriptStack.Compiler.Parser.Not(), ScriptStack.Compiler.Parser.Notify(), ScriptStack.Compiler.Parser.Or(), ScriptStack.Compiler.Parser.Parse(), ScriptStack.Compiler.Parser.Parser(), ScriptStack.Compiler.Parser.Pointer(), ScriptStack.Compiler.Parser.PostDecrement(), ScriptStack.Compiler.Parser.PostIncrement(), ScriptStack.Compiler.Parser.PreDecrement(), ScriptStack.Compiler.Parser.PreIncrement(), ScriptStack.Compiler.Parser.Relation(), ScriptStack.Compiler.Parser.ResolveForwardFunctionDeclarations(), ScriptStack.Compiler.Parser.Return(), ScriptStack.Compiler.Parser.RoutineCall(), ScriptStack.Compiler.Parser.ShiftLeft(), ScriptStack.Compiler.Parser.ShiftRight(), ScriptStack.Compiler.Parser.StructDeclaration(), ScriptStack.Compiler.Parser.Switch(), ScriptStack.Compiler.Parser.Term(), ScriptStack.Compiler.Parser.VariableAssignment(), ScriptStack.Compiler.Parser.VariableDeclaration(), ScriptStack.Compiler.Parser.Wait(), ScriptStack.Compiler.Parser.While(), ScriptStack.Compiler.Parser.Xor() und ScriptStack.Compiler.Parser.Yield().
|
private |
|
private |
|
private |
Wird benutzt von ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Compiler.Parser.AllocateVariable(), ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.FreeFunctionFrame(), ScriptStack.Compiler.Parser.FunctionDeclaration(), ScriptStack.Compiler.Parser.Parse() und ScriptStack.Compiler.Parser.Parser().
|
private |
|
private |
|
private |
|
private |
|
private |
Wird benutzt von ScriptStack.Compiler.Parser.AllocateTemporaryVariable(), ScriptStack.Compiler.Parser.AllocateVariable(), ScriptStack.Compiler.Parser.EnumDeclaration(), ScriptStack.Compiler.Parser.ExpectIdentifier(), ScriptStack.Compiler.Parser.Parse(), ScriptStack.Compiler.Parser.Parser(), ScriptStack.Compiler.Parser.StructDeclaration() und ScriptStack.Compiler.Parser.VariableDeclaration().