Documentation
¶
Index ¶
- Constants
- Variables
- type Ast
- type BooleanConst
- type Error
- type ErrorCode
- type ErrorType
- type FloatConst
- type IntegerConst
- type Interpreter
- func (i *Interpreter) Interpret() (interface{}, error)
- func (i *Interpreter) SetClient(midClient pb.MiddleClient, msgClient pb.MessageClient)
- func (i *Interpreter) Stdout() string
- func (i *Interpreter) Visit(node Ast) interface{}
- func (i *Interpreter) VisitBooleanConst(node *BooleanConst) bool
- func (i *Interpreter) VisitFloatConst(node *FloatConst) float64
- func (i *Interpreter) VisitIntegerConst(node *IntegerConst) int64
- func (i *Interpreter) VisitMessageConst(node *MessageConst) interface{}
- func (i *Interpreter) VisitNoOp(_ *NoOp) interface{}
- func (i *Interpreter) VisitOpcode(node *Opcode) float64
- func (i *Interpreter) VisitProgram(node *Program) interface{}
- func (i *Interpreter) VisitStringConst(node *StringConst) string
- func (i *Interpreter) VisitVar(_ *Var) interface{}
- type Lexer
- func (l *Lexer) Advance()
- func (l *Lexer) CarriageReturn() (*Token, error)
- func (l *Lexer) GetNextToken() (*Token, error)
- func (l *Lexer) Id() (*Token, error)
- func (l *Lexer) Message() (*Token, error)
- func (l *Lexer) Number() (*Token, error)
- func (l *Lexer) Peek() rune
- func (l *Lexer) SkipComment()
- func (l *Lexer) SkipWhitespace()
- func (l *Lexer) String() (*Token, error)
- type MessageConst
- type NoOp
- type Opcode
- type Opcoder
- type Parser
- func (p *Parser) Eat(tokenType TokenType) (err error)
- func (p *Parser) Empty() (Ast, error)
- func (p *Parser) Expression() ([]Ast, error)
- func (p *Parser) Factor() (Ast, error)
- func (p *Parser) OpcodeStatement() (Ast, error)
- func (p *Parser) Parse() (Ast, error)
- func (p *Parser) Program() (Ast, error)
- func (p *Parser) Statement() (Ast, error)
- func (p *Parser) StatementList() ([]Ast, error)
- func (p *Parser) Variable() (Ast, error)
- type Program
- type StringConst
- type Token
- type TokenType
- type Var
Constants ¶
View Source
const ( TokenPlus = "+" TokenMinus = "-" TokenMultiply = "*" TokenFloatDiv = "/" TokenLParen = "(" TokenRParen = ")" TokenLSquare = "[" TokenRSquare = "]" TokenLCurly = "{" TokenRCurly = "}" TokenSemi = ";" TokenDot = "." TokenColon = ":" TokenComma = "," TokenInteger = "INTEGER" TokenFloat = "FLOAT" TokenString = "STRING" TokenBoolean = "BOOLEAN" TokenMessage = "MESSAGE" TokenID = "ID" TokenIntegerConst = "INTEGER_CONST" TokenFloatConst = "FLOAT_CONST" TokenStringConst = "STRING_CONST" TokenMessageConst = "MESSAGE_CONST" TokenTrue = "TRUE" TokenFalse = "FALSE" TokenCarriageReturn = "\n" TokenEOF = "EOF" )
Variables ¶
View Source
var Debug bool
View Source
var ReservedKeywords = map[string]Token{ "INT": {Type: TokenInteger, Value: TokenInteger}, "FLOAT": {Type: TokenFloat, Value: TokenFloat}, "STRING": {Type: TokenString, Value: TokenString}, "BOOL": {Type: TokenBoolean, Value: TokenBoolean}, "TRUE": {Type: TokenTrue, Value: true}, "FALSE": {Type: TokenFalse, Value: false}, "MESSAGE": {Type: TokenMessage, Value: TokenMessage}, }
Functions ¶
This section is empty.
Types ¶
type BooleanConst ¶
func NewBooleanConst ¶
func NewBooleanConst(token *Token) *BooleanConst
type FloatConst ¶
func NewFloatConst ¶
func NewFloatConst(token *Token) *FloatConst
type IntegerConst ¶
func NewIntegerConst ¶
func NewIntegerConst(token *Token) *IntegerConst
type Interpreter ¶
type Interpreter struct {
// contains filtered or unexported fields
}
func NewInterpreter ¶
func NewInterpreter(tree Ast) *Interpreter
func (*Interpreter) Interpret ¶
func (i *Interpreter) Interpret() (interface{}, error)
func (*Interpreter) SetClient ¶
func (i *Interpreter) SetClient(midClient pb.MiddleClient, msgClient pb.MessageClient)
func (*Interpreter) Stdout ¶
func (i *Interpreter) Stdout() string
func (*Interpreter) Visit ¶
func (i *Interpreter) Visit(node Ast) interface{}
func (*Interpreter) VisitBooleanConst ¶
func (i *Interpreter) VisitBooleanConst(node *BooleanConst) bool
func (*Interpreter) VisitFloatConst ¶
func (i *Interpreter) VisitFloatConst(node *FloatConst) float64
func (*Interpreter) VisitIntegerConst ¶
func (i *Interpreter) VisitIntegerConst(node *IntegerConst) int64
func (*Interpreter) VisitMessageConst ¶
func (i *Interpreter) VisitMessageConst(node *MessageConst) interface{}
func (*Interpreter) VisitNoOp ¶
func (i *Interpreter) VisitNoOp(_ *NoOp) interface{}
func (*Interpreter) VisitOpcode ¶
func (i *Interpreter) VisitOpcode(node *Opcode) float64
func (*Interpreter) VisitProgram ¶
func (i *Interpreter) VisitProgram(node *Program) interface{}
func (*Interpreter) VisitStringConst ¶
func (i *Interpreter) VisitStringConst(node *StringConst) string
func (*Interpreter) VisitVar ¶
func (i *Interpreter) VisitVar(_ *Var) interface{}
type Lexer ¶
func (*Lexer) CarriageReturn ¶
func (*Lexer) GetNextToken ¶
func (*Lexer) SkipComment ¶
func (l *Lexer) SkipComment()
func (*Lexer) SkipWhitespace ¶
func (l *Lexer) SkipWhitespace()
type MessageConst ¶
type MessageConst struct {
Token *Token
Value interface{}
}
func NewMessageConst ¶
func NewMessageConst(token *Token) *MessageConst
type Parser ¶
func (*Parser) Expression ¶
func (*Parser) OpcodeStatement ¶
func (*Parser) StatementList ¶
type Program ¶
func NewProgram ¶
type StringConst ¶
func NewStringConst ¶
func NewStringConst(token *Token) *StringConst
Click to show internal directories.
Click to hide internal directories.