Documentation
¶
Index ¶
- Constants
- func ArithmeticOperators(script string) interface{}
- func EvaluateWithRuntime(node *ASTNode, indent string) interface{}
- func InitRuntime(verbose bool)
- type ASTNode
- func AdditiveLoop(tokenReader *TokenReader) (*ASTNode, error)
- func AssignmentStatement(reader *TokenReader) (*ASTNode, error)
- func ExpressionStatement(reader *TokenReader) (*ASTNode, error)
- func IntDeclare(tokenReader *TokenReader) (*ASTNode, error)
- func MultiplicativeLoop(tokenReader *TokenReader) (*ASTNode, error)
- func NewASTNode(nodeType ASTNodeType, text string) *ASTNode
- func Parse(script string) (*ASTNode, error)
- func Primary(tokenReader *TokenReader) (*ASTNode, error)
- type ASTNodeType
- type Runtime
- type TokenReader
Constants ¶
const ( App = "gscript" Indent = "├" Logo = `` /* 134-byte string literal not displayed */ )
Variables ¶
This section is empty.
Functions ¶
func ArithmeticOperators ¶
func ArithmeticOperators(script string) interface{}
func EvaluateWithRuntime ¶
EvaluateWithRuntime deep recursion loop AST
func InitRuntime ¶
func InitRuntime(verbose bool)
Types ¶
type ASTNode ¶
type ASTNode struct {
// contains filtered or unexported fields
}
ASTNode AST tree
func AdditiveLoop ¶
func AdditiveLoop(tokenReader *TokenReader) (*ASTNode, error)
AdditiveLoop Additive -> Multiplicative ( (+ | -) Multiplicative)*
func AssignmentStatement ¶
func AssignmentStatement(reader *TokenReader) (*ASTNode, error)
AssignmentStatement -> Identifier = Additive parse: a = 10*2,
func ExpressionStatement ¶
func ExpressionStatement(reader *TokenReader) (*ASTNode, error)
ExpressionStatement -> 1+2*3 '\n'
func IntDeclare ¶
func IntDeclare(tokenReader *TokenReader) (*ASTNode, error)
IntDeclare int a=10+1*2
func MultiplicativeLoop ¶
func MultiplicativeLoop(tokenReader *TokenReader) (*ASTNode, error)
MultiplicativeLoop Multiplicative -> Primary ((* | /) Primary)*
func NewASTNode ¶
func NewASTNode(nodeType ASTNodeType, text string) *ASTNode
func Parse ¶
Parse syntax parsing. Program -> IntDeclaration | ExpressionStatement | AssignmentStatement IntDeclaration -> 'int' Id ( = Additive) '\n' ExpressionStatement -> Additive '\n' Additive -> Multiplicative ( (+ | -) Multiplicative)* Multiplicative -> Primary ((* | /) Primary)* Primary -> IntLiteral | Id | Additive AssignmentStatement -> Identifier = Additive
func Primary ¶
func Primary(tokenReader *TokenReader) (*ASTNode, error)
Primary Analyze primary 1+2->1; IntLiteral | Id | Additive
func (*ASTNode) GetChildren ¶
func (*ASTNode) GetNodeType ¶
func (a *ASTNode) GetNodeType() ASTNodeType
type ASTNodeType ¶
type ASTNodeType string
const ( Program ASTNodeType = "Program" IntDeclaration ASTNodeType = "IntDeclaration" AssignmentStmt ASTNodeType = "AssignmentStmt" PrimaryType ASTNodeType = "Primary" MultiplicativeType ASTNodeType = "Multiplicative" AdditiveType ASTNodeType = "Additive" IdentifierType ASTNodeType = "Identifier" FloatType ASTNodeType = "FloatType" IntLiteralType ASTNodeType = "IntLiteral" )
AST tree: node type.
type Runtime ¶
type Runtime struct {
// contains filtered or unexported fields
}
func GetRuntime ¶
func GetRuntime() *Runtime
func NewRuntime ¶
type TokenReader ¶
type TokenReader struct {
// contains filtered or unexported fields
}
TokenReader simulate token reader stream.
func NewTokenReader ¶
func NewTokenReader(tokens []*token.TokenType) *TokenReader
func (*TokenReader) GetPos ¶
func (t *TokenReader) GetPos() uint64
func (*TokenReader) Read ¶
func (t *TokenReader) Read() *token.TokenType
Read read from token stream.
func (*TokenReader) SetPos ¶
func (t *TokenReader) SetPos(pos uint64)
func (*TokenReader) UnRead ¶
func (t *TokenReader) UnRead()