gscript

package module
v0.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 5, 2022 License: BSD-3-Clause Imports: 9 Imported by: 1

README

 _     _   
 ___ ___ ___ ___|_|___| |_ 
| . |_ -|  _|  _| | . |  _|
|_  |___|___|_| |_|  _|_|  
|___|             |_|   


Introduction

This is an experimental script language. and helps beginners to learn compilation principles.

It is called GScript because it is written with Go.

Demo

int b= 10;
int foo(int age){
	for(int i=0;i<10;i++){
		age++;
	}
	return b+age;
}
int add(int a,int b) {
	int e = foo(10);
	e = e+10;
	return a+b+3+e;
}
add(2,20);
// Output:65

Installation

go install github.com/crossoverJie/gscript/cmd@latest

gscript -h

Or download the binary file directly

Features

  • Basic quadratic operations
  • Scope and function.
  • More basic type
  • Support scope and function
  • Support closure
  • OOP

Contact author

crossoverJie#gmail.com

qrcode_for_gh_3a954a025f10_258.jpg

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	BreakObjectInstance    = &BreakObject{}
	ContinueObjectInstance = &ContinueObject{}
)

Functions

func ArithmeticOperators

func ArithmeticOperators(script string) interface{}

Types

type ArrayObject added in v0.0.6

type ArrayObject struct {
	// contains filtered or unexported fields
}

func NewArrayObject added in v0.0.6

func NewArrayObject(left *LeftValue, index int) *ArrayObject

NewArrayObject 数据对象

func (*ArrayObject) GetIndex added in v0.0.6

func (a *ArrayObject) GetIndex() int

func (*ArrayObject) GetIndexValue added in v0.0.6

func (a *ArrayObject) GetIndexValue() interface{}

GetIndexValue 根据下标获取数组值

func (*ArrayObject) GetLeftValue added in v0.0.6

func (a *ArrayObject) GetLeftValue() *LeftValue

func (*ArrayObject) SetIndexValue added in v0.0.6

func (a *ArrayObject) SetIndexValue(val interface{})

SetIndexValue 根据下标为数组赋值

type BreakObject added in v0.0.6

type BreakObject struct{}

type Compiler added in v0.0.4

type Compiler struct {
}

func NewCompiler added in v0.0.4

func NewCompiler() *Compiler

func (*Compiler) Compiler added in v0.0.4

func (c *Compiler) Compiler(script string) interface{}

func (*Compiler) CompilerWithoutNative added in v0.0.6

func (c *Compiler) CompilerWithoutNative(script string) interface{}

CompilerWithoutNative 不包含标准库运行

type ContinueObject added in v0.0.6

type ContinueObject struct{}

type LeftValue added in v0.0.4

type LeftValue struct {
	// contains filtered or unexported fields
}

func NewLeftValue added in v0.0.4

func NewLeftValue(variable *symbol.Variable, object stack.Object) *LeftValue

func (*LeftValue) GetValue added in v0.0.4

func (l *LeftValue) GetValue() interface{}

func (*LeftValue) SetValue added in v0.0.4

func (l *LeftValue) SetValue(value interface{})

func (*LeftValue) String added in v0.0.4

func (l *LeftValue) String() string

type ReturnObject added in v0.0.6

type ReturnObject struct {
	// contains filtered or unexported fields
}

func NewReturnObject added in v0.0.6

func NewReturnObject(object interface{}) *ReturnObject

func (*ReturnObject) GetReturnObject added in v0.0.6

func (r *ReturnObject) GetReturnObject() interface{}

func (*ReturnObject) String added in v0.0.6

func (r *ReturnObject) String() string

type Visitor added in v0.0.4

type Visitor struct {
	parser.BaseGScriptVisitor
	// contains filtered or unexported fields
}

func NewVisitor added in v0.0.4

func NewVisitor(at *resolver.AnnotatedTree) *Visitor

func (*Visitor) Visit added in v0.0.4

func (v *Visitor) Visit(tree antlr.ParseTree) interface{}

func (*Visitor) VisitArrayInitializer added in v0.0.6

func (v *Visitor) VisitArrayInitializer(ctx *parser.ArrayInitializerContext) interface{}

func (*Visitor) VisitBlock added in v0.0.4

func (v *Visitor) VisitBlock(ctx *parser.BlockContext) interface{}

func (*Visitor) VisitBlockStm added in v0.0.4

func (v *Visitor) VisitBlockStm(ctx *parser.BlockStmContext) interface{}

func (*Visitor) VisitBlockStms added in v0.0.4

func (v *Visitor) VisitBlockStms(ctx *parser.BlockStmsContext) interface{}

func (*Visitor) VisitBlockVarDeclar added in v0.0.4

func (v *Visitor) VisitBlockVarDeclar(ctx *parser.BlockVarDeclarContext) interface{}

func (*Visitor) VisitClassBody added in v0.0.6

func (v *Visitor) VisitClassBody(ctx *parser.ClassBodyContext) interface{}

func (*Visitor) VisitClassBodyDeclaration added in v0.0.6

func (v *Visitor) VisitClassBodyDeclaration(ctx *parser.ClassBodyDeclarationContext) interface{}

func (*Visitor) VisitClassDeclaration added in v0.0.6

func (v *Visitor) VisitClassDeclaration(ctx *parser.ClassDeclarationContext) interface{}

func (*Visitor) VisitExpr added in v0.0.4

func (v *Visitor) VisitExpr(ctx *parser.ExprContext) interface{}

func (*Visitor) VisitExpressionList added in v0.0.4

func (v *Visitor) VisitExpressionList(ctx *parser.ExpressionListContext) interface{}

func (*Visitor) VisitFieldDeclaration added in v0.0.6

func (v *Visitor) VisitFieldDeclaration(ctx *parser.FieldDeclarationContext) interface{}

func (*Visitor) VisitForControl added in v0.0.4

func (v *Visitor) VisitForControl(ctx *parser.ForControlContext) interface{}

func (*Visitor) VisitForInit added in v0.0.4

func (v *Visitor) VisitForInit(ctx *parser.ForInitContext) interface{}

func (*Visitor) VisitFunctionBody added in v0.0.4

func (v *Visitor) VisitFunctionBody(ctx *parser.FunctionBodyContext) interface{}

func (*Visitor) VisitFunctionCall added in v0.0.4

func (v *Visitor) VisitFunctionCall(ctx *parser.FunctionCallContext) interface{}

VisitFunctionCall 函数调用

func (*Visitor) VisitFunctionDeclaration added in v0.0.4

func (v *Visitor) VisitFunctionDeclaration(ctx *parser.FunctionDeclarationContext) interface{}

func (*Visitor) VisitLiteral added in v0.0.4

func (v *Visitor) VisitLiteral(ctx *parser.LiteralContext) interface{}

func (*Visitor) VisitMemberDeclaration added in v0.0.6

func (v *Visitor) VisitMemberDeclaration(ctx *parser.MemberDeclarationContext) interface{}

func (*Visitor) VisitParExpression added in v0.0.4

func (v *Visitor) VisitParExpression(ctx *parser.ParExpressionContext) interface{}

func (*Visitor) VisitParse added in v0.0.4

func (v *Visitor) VisitParse(ctx *parser.ParseContext) interface{}

func (*Visitor) VisitPrimary added in v0.0.4

func (v *Visitor) VisitPrimary(ctx *parser.PrimaryContext) interface{}

func (*Visitor) VisitProg added in v0.0.4

func (v *Visitor) VisitProg(ctx *parser.ProgContext) interface{}

func (*Visitor) VisitStmBlockLabel added in v0.0.4

func (v *Visitor) VisitStmBlockLabel(ctx *parser.StmBlockLabelContext) interface{}

func (*Visitor) VisitStmBreak added in v0.0.6

func (v *Visitor) VisitStmBreak(ctx *parser.StmBreakContext) interface{}

func (*Visitor) VisitStmContinue added in v0.0.6

func (v *Visitor) VisitStmContinue(ctx *parser.StmContinueContext) interface{}

func (*Visitor) VisitStmExpr added in v0.0.4

func (v *Visitor) VisitStmExpr(ctx *parser.StmExprContext) interface{}

func (*Visitor) VisitStmFor added in v0.0.4

func (v *Visitor) VisitStmFor(ctx *parser.StmForContext) interface{}

func (*Visitor) VisitStmIfElse added in v0.0.4

func (v *Visitor) VisitStmIfElse(ctx *parser.StmIfElseContext) interface{}

func (*Visitor) VisitStmReturn added in v0.0.4

func (v *Visitor) VisitStmReturn(ctx *parser.StmReturnContext) interface{}

func (*Visitor) VisitStmWhile added in v0.0.6

func (v *Visitor) VisitStmWhile(ctx *parser.StmWhileContext) interface{}

func (*Visitor) VisitVariableDeclarator added in v0.0.4

func (v *Visitor) VisitVariableDeclarator(ctx *parser.VariableDeclaratorContext) interface{}

func (*Visitor) VisitVariableDeclaratorId added in v0.0.4

func (v *Visitor) VisitVariableDeclaratorId(ctx *parser.VariableDeclaratorIdContext) interface{}

func (*Visitor) VisitVariableDeclarators added in v0.0.4

func (v *Visitor) VisitVariableDeclarators(ctx *parser.VariableDeclaratorsContext) interface{}

func (*Visitor) VisitVariableInitializer added in v0.0.4

func (v *Visitor) VisitVariableInitializer(ctx *parser.VariableInitializerContext) interface{}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL