js2go

package module
v0.0.0-...-0bf0997 Latest Latest
Warning

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

Go to latest
Published: May 12, 2021 License: Apache-2.0 Imports: 4 Imported by: 0

README

js2go

Original Goal

This project started to enable high-performance server-side rendering for Vue for backends written in Go by compiling JavaScript into Go. There were two main ideas behind it:

  • Compiling to Go should be better than other approaches (e.g., using node in a separate process just for serving server-rendered content, or embedding the V8 engine) because there would not be any inter-process communication (and no overhead to convert between V8 structures and host structures). We could also take advantage of the threading model of the Go runtime to render many requests in parallel.
  • Curiosity on how would an Ahead-of-Time compiler do in comparison with existing Just-In-Time compiler (V8).
  • Many JavaScript features are relatively easy to implement in Go because Go provides out of the box a wide range of powerful features. If not easy, it is at least an interesting exercise to do.

Current Status

After enough JavaScript features have been implemented to do a benchmark, the benchmark has shown that a compiled Go implementation is substantially slower than what V8 provides out of the box. Go compiler is not doing enough (any?) magic for a relatively straightforward implementation to achieve comparable performance.

The Just-In-Time compilation used by V8 seems to be more suitable than Ahead-of-Time for a dynamically typed language like JavaScript. The code produced by js2go has not (yet) been optimized, but the performance issue seems to be more fundamental: JavaScript (and current corresponding Go code made by js2go) lacks typing information for its values which means that every operation on values has first to check what the type is. In Go, values are implemented using an interface, which means one pointer lookup based on the concrete value type. Moreover, JavaScript arrays are sparse, so a naive implementation with Go map does not help much with cache locality and adds one more pointer lookup. You can read more about some issues compiling JavaScript with Ahead-of-Time approach here.

This compiler does produce programs which have more consistent performance behavior and lower memory footprint than V8 (node.js) though. But it is unclear if that would persist once all features of JavaScript were implemented.

There are few directions this projects could go:

  • Do more work on optimizing produced code: do static analysis to detect types, use specialized code for those types, find ways to remove pointers when they are not needed. But probably we would eventually have to do analysis and optimization during runtime, which means we would gain some form of JIT. V8 already has all of that so it unclear what would be the benefit of this direction.
  • The input to this compiler could be TypeScript and compiler could then use typing information to produce optimized code. Adding typing information would then have additional performance benefit. Moreover, if optimized code would fail at runtime because real values would not match expected types, failing execution would be seen as a feature, not a bug.
  • The compiler could become a JavaScript to Go migration tool, which would not really produce fully JavaScript compliant or even executable Go code, but idiomatic Go code which might require some manual changes to get it to work and behave like original JavaScript code.

Currently this project is on hold and none of these directions are pursued. If you are interested in contributing or discussing, feel free to open an issue.

Installation

Clone with --recursive:

git clone --recursive https://gitlab.com/js2go/js2go.git

If you want to regenerate the JavaScript Go parser, you have to install Antlr:

apt-get install openjdk-14-jre
cd /usr/local/lib
wget https://www.antlr.org/download/antlr-4.9.2-complete.jar

Add to .profile:

export CLASSPATH=".:/usr/local/lib/antlr-4.9.2-complete.jar:$CLASSPATH"

Add to .bashrc:

alias antlr4='java -Xmx500M -cp "/usr/local/lib/antlr-4.9-complete.jar:$CLASSPATH" org.antlr.v4.Tool'
alias grun='java -Xmx500M -cp "/usr/local/lib/antlr-4.9-complete.jar:$CLASSPATH" org.antlr.v4.gui.TestRig'

Benchmark

Benchmark comparing run time of running spectralnorm.js (see description) program for various values of n for:

n go gccgo node js2go otto v8go
200 0.006±0.000 0.017±0.001 0.048±0.003 0.505±0.009 17.153±0.016 0.029±0.001
400 0.025±0.002 0.030±0.002 0.054±0.000 1.955±0.011 68.992±0.060 0.046±0.003
600 0.055±0.004 0.048±0.004 0.074±0.003 4.340±0.020 157.690±0.369 0.062±0.004
800 0.089±0.004 0.065±0.004 0.091±0.000 7.732±0.037 282.356±0.361 0.087±0.003
1000 0.128±0.003 0.086±0.005 0.120±0.000 11.890±0.035 439.680±1.220 0.113±0.003
1200 0.175±0.003 0.107±0.004 0.154±0.000 17.165±0.018 633.312±0.615 0.150±0.003
1400 0.243±0.003 0.138±0.005 0.194±0.000 23.501±0.043 869.256±0.351 0.191±0.004
1600 0.314±0.003 0.172±0.003 0.241±0.000 30.883±0.054 1143.040±1.380 0.238±0.003
1800 0.392±0.003 0.209±0.004 0.294±0.000 38.898±0.073 1489.740±1.170 0.293±0.003
2000 0.483±0.003 0.257±0.003 0.361±0.003 48.171±0.037 1855.270±4.590 0.350±0.003
2200 0.569±0.003 0.299±0.003 0.419±0.000 58.508±0.153 0.417±0.002
2400 0.683±0.003 0.361±0.003 0.496±0.004 69.746±0.113 0.497±0.005
2600 0.796±0.003 0.410±0.003 0.568±0.001 81.806±0.075 0.583±0.003
2800 0.924±0.003 0.468±0.004 0.658±0.003 95.581±0.130 0.664±0.003
3000 1.067±0.005 0.535±0.004 0.743±0.000 109.910±0.069 0.763±0.003
3200 1.215±0.003 0.598±0.004 0.845±0.003 125.626±0.111 0.872±0.004
3400 1.358±0.003 0.682±0.004 0.942±0.000 142.237±0.223 0.987±0.003
3600 1.523±0.003 0.764±0.003 1.054±0.002 159.263±0.213 1.125±0.007
3800 1.700±0.002 0.839±0.004 1.179±0.005 177.440±0.228 1.263±0.006
4000 1.887±0.003 0.946±0.017 1.287±0.000 196.930±0.198 1.403±0.009
4200 2.068±0.003 1.017±0.004 1.427±0.001 217.336±0.242 1.561±0.012
4400 2.267±0.002 1.115±0.004 1.561±0.000 239.315±0.449 1.770±0.013
4600 2.479±0.003 1.215±0.004 1.697±0.003 261.922±0.434 1.983±0.008
4800 2.698±0.006 1.329±0.006 1.858±0.003 285.018±0.413 2.141±0.014
5000 2.928±0.003 1.435±0.003 1.999±0.003 313.531±0.481 2.402±0.018

All measurements are in seconds. Repeated 10 times and averaged. Note that measurements include program startup time.

node.js is really fast and even Go version of the program is unable to keep with it for large n. Only when compiled with gccgo Go compiler, Go version is faster for all n than node.js. It is important to note that Go version of the program knows data types and can preallocate arrays and that node.js generally has a higher startup cost. It is amazing to see how node.js can detect and adapt to that on the fly.

Otto is dramatically slow. js2go is visibly slower at small n already.

v8go is comparable with the node.js version, but this benchmark has not really transmitted a lot of data between Go and V8 engine.

  • Godzilla is a ES2015 to Go source code transpiler and runtime, but it seems it does not work on anything than the most trivial JavaScript programs.
  • Otto is a JavaScript interpreter written in Go.
  • v8go allows running JavaScript from Go inside a V8 engine.
  • Gojis is another JavaScript interpreter.
  • Goja is another JavaScript interpreter.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Compile

func Compile(javaScriptCode string, packageName string) (string, error)

func Preamble

func Preamble() string

Types

type CompileError

type CompileError struct {
	Message       string
	VisitorErrors []VisitorError
	SyntaxErrors  []SyntaxError
}

func (*CompileError) Error

func (e *CompileError) Error() string

type ErrorListener

type ErrorListener struct {
	SyntaxErrors []SyntaxError
}

func (*ErrorListener) ReportAmbiguity

func (l *ErrorListener) ReportAmbiguity(recognizer antlr.Parser, dfa *antlr.DFA, startIndex, stopIndex int, exact bool, ambigAlts *antlr.BitSet, configs antlr.ATNConfigSet)

func (*ErrorListener) ReportAttemptingFullContext

func (l *ErrorListener) ReportAttemptingFullContext(recognizer antlr.Parser, dfa *antlr.DFA, startIndex, stopIndex int, conflictingAlts *antlr.BitSet, configs antlr.ATNConfigSet)

func (*ErrorListener) ReportContextSensitivity

func (l *ErrorListener) ReportContextSensitivity(recognizer antlr.Parser, dfa *antlr.DFA, startIndex, stopIndex, prediction int, configs antlr.ATNConfigSet)

func (*ErrorListener) SyntaxError

func (l *ErrorListener) SyntaxError(recognizer antlr.Recognizer, offendingSymbol interface{}, line, column int, msg string, e antlr.RecognitionException)

type SyntaxError

type SyntaxError struct {
	OffendingSymbol interface{}
	Line            int
	Column          int
	Msg             string
	Exception       antlr.RecognitionException
}

type Visitor

type Visitor struct {
	Errors             []VisitorError
	TopLevelStatements string
	// contains filtered or unexported fields
}

func (*Visitor) AcceptString

func (v *Visitor) AcceptString(tree antlr.ParseTree) string

func (*Visitor) AcceptStringVisitorResult

func (v *Visitor) AcceptStringVisitorResult(tree antlr.ParseTree) parser.StringVisitorResult

func (*Visitor) Visit

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

func (*Visitor) VisitAdditiveExpression

func (v *Visitor) VisitAdditiveExpression(ctx *parser.AdditiveExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#AdditiveExpression.

func (*Visitor) VisitAliasName

func (v *Visitor) VisitAliasName(ctx *parser.AliasNameContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#aliasName.

func (*Visitor) VisitAnonymousFunctionDecl

func (v *Visitor) VisitAnonymousFunctionDecl(ctx *parser.AnonymousFunctionDeclContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#AnonymousFunctionDecl.

func (*Visitor) VisitArgument

func (v *Visitor) VisitArgument(ctx *parser.ArgumentContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#argument.

func (*Visitor) VisitArguments

func (v *Visitor) VisitArguments(ctx *parser.ArgumentsContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#arguments.

func (*Visitor) VisitArgumentsExpression

func (v *Visitor) VisitArgumentsExpression(ctx *parser.ArgumentsExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ArgumentsExpression.

func (*Visitor) VisitArrayElement

func (v *Visitor) VisitArrayElement(ctx *parser.ArrayElementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#arrayElement.

func (*Visitor) VisitArrayLiteral

func (v *Visitor) VisitArrayLiteral(ctx *parser.ArrayLiteralContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#arrayLiteral.

func (*Visitor) VisitArrayLiteralExpression

func (v *Visitor) VisitArrayLiteralExpression(ctx *parser.ArrayLiteralExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ArrayLiteralExpression.

func (*Visitor) VisitArrowFunction

func (v *Visitor) VisitArrowFunction(ctx *parser.ArrowFunctionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ArrowFunction.

func (*Visitor) VisitArrowFunctionBody

func (v *Visitor) VisitArrowFunctionBody(ctx *parser.ArrowFunctionBodyContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#arrowFunctionBody.

func (*Visitor) VisitArrowFunctionParameters

func (v *Visitor) VisitArrowFunctionParameters(ctx *parser.ArrowFunctionParametersContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#arrowFunctionParameters.

func (*Visitor) VisitAssignable

func (v *Visitor) VisitAssignable(ctx *parser.AssignableContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#assignable.

func (*Visitor) VisitAssignmentExpression

func (v *Visitor) VisitAssignmentExpression(ctx *parser.AssignmentExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#AssignmentExpression.

func (*Visitor) VisitAssignmentOperator

func (v *Visitor) VisitAssignmentOperator(ctx *parser.AssignmentOperatorContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#assignmentOperator.

func (*Visitor) VisitAssignmentOperatorExpression

func (v *Visitor) VisitAssignmentOperatorExpression(ctx *parser.AssignmentOperatorExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#AssignmentOperatorExpression.

func (*Visitor) VisitAwaitExpression

func (v *Visitor) VisitAwaitExpression(ctx *parser.AwaitExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#AwaitExpression.

func (*Visitor) VisitBigintLiteral

func (v *Visitor) VisitBigintLiteral(ctx *parser.BigintLiteralContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#bigintLiteral.

func (*Visitor) VisitBitAndExpression

func (v *Visitor) VisitBitAndExpression(ctx *parser.BitAndExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#BitAndExpression.

func (*Visitor) VisitBitNotExpression

func (v *Visitor) VisitBitNotExpression(ctx *parser.BitNotExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#BitNotExpression.

func (*Visitor) VisitBitOrExpression

func (v *Visitor) VisitBitOrExpression(ctx *parser.BitOrExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#BitOrExpression.

func (*Visitor) VisitBitShiftExpression

func (v *Visitor) VisitBitShiftExpression(ctx *parser.BitShiftExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#BitShiftExpression.

func (*Visitor) VisitBitXOrExpression

func (v *Visitor) VisitBitXOrExpression(ctx *parser.BitXOrExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#BitXOrExpression.

func (*Visitor) VisitBlock

func (v *Visitor) VisitBlock(ctx *parser.BlockContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#block.

func (*Visitor) VisitBreakStatement

func (v *Visitor) VisitBreakStatement(ctx *parser.BreakStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#breakStatement.

func (*Visitor) VisitCaseBlock

func (v *Visitor) VisitCaseBlock(ctx *parser.CaseBlockContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#caseBlock.

func (*Visitor) VisitCaseClause

func (v *Visitor) VisitCaseClause(ctx *parser.CaseClauseContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#caseClause.

func (*Visitor) VisitCaseClauses

func (v *Visitor) VisitCaseClauses(ctx *parser.CaseClausesContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#caseClauses.

func (*Visitor) VisitCatchProduction

func (v *Visitor) VisitCatchProduction(ctx *parser.CatchProductionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#catchProduction.

func (*Visitor) VisitChildren

func (v *Visitor) VisitChildren(node antlr.RuleNode) interface{}

func (*Visitor) VisitClassDeclaration

func (v *Visitor) VisitClassDeclaration(ctx *parser.ClassDeclarationContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#classDeclaration.

func (*Visitor) VisitClassElement

func (v *Visitor) VisitClassElement(ctx *parser.ClassElementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#classElement.

func (*Visitor) VisitClassExpression

func (v *Visitor) VisitClassExpression(ctx *parser.ClassExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ClassExpression.

func (*Visitor) VisitClassTail

func (v *Visitor) VisitClassTail(ctx *parser.ClassTailContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#classTail.

func (*Visitor) VisitCoalesceExpression

func (v *Visitor) VisitCoalesceExpression(ctx *parser.CoalesceExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#CoalesceExpression.

func (*Visitor) VisitComputedPropertyExpressionAssignment

func (v *Visitor) VisitComputedPropertyExpressionAssignment(ctx *parser.ComputedPropertyExpressionAssignmentContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ComputedPropertyExpressionAssignment.

func (*Visitor) VisitContinueStatement

func (v *Visitor) VisitContinueStatement(ctx *parser.ContinueStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#continueStatement.

func (*Visitor) VisitDebuggerStatement

func (v *Visitor) VisitDebuggerStatement(ctx *parser.DebuggerStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#debuggerStatement.

func (*Visitor) VisitDeclaration

func (v *Visitor) VisitDeclaration(ctx *parser.DeclarationContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#declaration.

func (*Visitor) VisitDefaultClause

func (v *Visitor) VisitDefaultClause(ctx *parser.DefaultClauseContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#defaultClause.

func (*Visitor) VisitDeleteExpression

func (v *Visitor) VisitDeleteExpression(ctx *parser.DeleteExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#DeleteExpression.

func (*Visitor) VisitDoStatement

func (v *Visitor) VisitDoStatement(ctx *parser.DoStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#DoStatement.

func (*Visitor) VisitElementList

func (v *Visitor) VisitElementList(ctx *parser.ElementListContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#elementList.

func (*Visitor) VisitEmptyStatement_

func (v *Visitor) VisitEmptyStatement_(ctx *parser.EmptyStatement_Context) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#emptyStatement_.

func (*Visitor) VisitEos

func (v *Visitor) VisitEos(ctx *parser.EosContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#eos.

func (*Visitor) VisitEqualityExpression

func (v *Visitor) VisitEqualityExpression(ctx *parser.EqualityExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#EqualityExpression.

func (*Visitor) VisitErrorNode

func (v *Visitor) VisitErrorNode(node antlr.ErrorNode) interface{}

func (*Visitor) VisitExportDeclaration

func (v *Visitor) VisitExportDeclaration(ctx *parser.ExportDeclarationContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ExportDeclaration.

func (*Visitor) VisitExportDefaultDeclaration

func (v *Visitor) VisitExportDefaultDeclaration(ctx *parser.ExportDefaultDeclarationContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ExportDefaultDeclaration.

func (*Visitor) VisitExportFromBlock

func (v *Visitor) VisitExportFromBlock(ctx *parser.ExportFromBlockContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#exportFromBlock.

func (*Visitor) VisitExpressionSequence

func (v *Visitor) VisitExpressionSequence(ctx *parser.ExpressionSequenceContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#expressionSequence.

func (*Visitor) VisitExpressionStatement

func (v *Visitor) VisitExpressionStatement(ctx *parser.ExpressionStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#expressionStatement.

func (*Visitor) VisitFinallyProduction

func (v *Visitor) VisitFinallyProduction(ctx *parser.FinallyProductionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#finallyProduction.

func (*Visitor) VisitForInStatement

func (v *Visitor) VisitForInStatement(ctx *parser.ForInStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ForInStatement.

func (*Visitor) VisitForOfStatement

func (v *Visitor) VisitForOfStatement(ctx *parser.ForOfStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ForOfStatement.

func (*Visitor) VisitForStatement

func (v *Visitor) VisitForStatement(ctx *parser.ForStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ForStatement.

func (*Visitor) VisitFormalParameterArg

func (v *Visitor) VisitFormalParameterArg(ctx *parser.FormalParameterArgContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#formalParameterArg.

func (*Visitor) VisitFormalParameterList

func (v *Visitor) VisitFormalParameterList(ctx *parser.FormalParameterListContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#formalParameterList.

func (*Visitor) VisitFunctionBody

func (v *Visitor) VisitFunctionBody(ctx *parser.FunctionBodyContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#functionBody.

func (*Visitor) VisitFunctionDecl

func (v *Visitor) VisitFunctionDecl(ctx *parser.FunctionDeclContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#FunctionDecl.

func (*Visitor) VisitFunctionDeclaration

func (v *Visitor) VisitFunctionDeclaration(ctx *parser.FunctionDeclarationContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#functionDeclaration.

func (*Visitor) VisitFunctionExpression

func (v *Visitor) VisitFunctionExpression(ctx *parser.FunctionExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#FunctionExpression.

func (*Visitor) VisitFunctionProperty

func (v *Visitor) VisitFunctionProperty(ctx *parser.FunctionPropertyContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#FunctionProperty.

func (*Visitor) VisitGetter

func (v *Visitor) VisitGetter(ctx *parser.GetterContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#getter.

func (*Visitor) VisitIdentifier

func (v *Visitor) VisitIdentifier(ctx *parser.IdentifierContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#identifier.

func (*Visitor) VisitIdentifierExpression

func (v *Visitor) VisitIdentifierExpression(ctx *parser.IdentifierExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#IdentifierExpression.

func (*Visitor) VisitIdentifierName

func (v *Visitor) VisitIdentifierName(ctx *parser.IdentifierNameContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#identifierName.

func (*Visitor) VisitIfStatement

func (v *Visitor) VisitIfStatement(ctx *parser.IfStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ifStatement.

func (*Visitor) VisitImportDefault

func (v *Visitor) VisitImportDefault(ctx *parser.ImportDefaultContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#importDefault.

func (*Visitor) VisitImportExpression

func (v *Visitor) VisitImportExpression(ctx *parser.ImportExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ImportExpression.

func (*Visitor) VisitImportFrom

func (v *Visitor) VisitImportFrom(ctx *parser.ImportFromContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#importFrom.

func (*Visitor) VisitImportFromBlock

func (v *Visitor) VisitImportFromBlock(ctx *parser.ImportFromBlockContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#importFromBlock.

func (*Visitor) VisitImportNamespace

func (v *Visitor) VisitImportNamespace(ctx *parser.ImportNamespaceContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#importNamespace.

func (*Visitor) VisitImportStatement

func (v *Visitor) VisitImportStatement(ctx *parser.ImportStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#importStatement.

func (*Visitor) VisitInExpression

func (v *Visitor) VisitInExpression(ctx *parser.InExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#InExpression.

func (*Visitor) VisitInstanceofExpression

func (v *Visitor) VisitInstanceofExpression(ctx *parser.InstanceofExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#InstanceofExpression.

func (*Visitor) VisitKeyword

func (v *Visitor) VisitKeyword(ctx *parser.KeywordContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#keyword.

func (*Visitor) VisitLabelledStatement

func (v *Visitor) VisitLabelledStatement(ctx *parser.LabelledStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#labelledStatement.

func (*Visitor) VisitLastFormalParameterArg

func (v *Visitor) VisitLastFormalParameterArg(ctx *parser.LastFormalParameterArgContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#lastFormalParameterArg.

func (*Visitor) VisitLet_

func (v *Visitor) VisitLet_(ctx *parser.Let_Context) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#let_.

func (*Visitor) VisitLiteral

func (v *Visitor) VisitLiteral(ctx *parser.LiteralContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#literal.

func (*Visitor) VisitLiteralExpression

func (v *Visitor) VisitLiteralExpression(ctx *parser.LiteralExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#LiteralExpression.

func (*Visitor) VisitLogicalAndExpression

func (v *Visitor) VisitLogicalAndExpression(ctx *parser.LogicalAndExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#LogicalAndExpression.

func (*Visitor) VisitLogicalOrExpression

func (v *Visitor) VisitLogicalOrExpression(ctx *parser.LogicalOrExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#LogicalOrExpression.

func (*Visitor) VisitMemberDotExpression

func (v *Visitor) VisitMemberDotExpression(ctx *parser.MemberDotExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#MemberDotExpression.

func (*Visitor) VisitMemberIndexExpression

func (v *Visitor) VisitMemberIndexExpression(ctx *parser.MemberIndexExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#MemberIndexExpression.

func (*Visitor) VisitMetaExpression

func (v *Visitor) VisitMetaExpression(ctx *parser.MetaExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#MetaExpression.

func (*Visitor) VisitMethodDefinition

func (v *Visitor) VisitMethodDefinition(ctx *parser.MethodDefinitionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#methodDefinition.

func (*Visitor) VisitModuleItems

func (v *Visitor) VisitModuleItems(ctx *parser.ModuleItemsContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#moduleItems.

func (*Visitor) VisitMultiplicativeExpression

func (v *Visitor) VisitMultiplicativeExpression(ctx *parser.MultiplicativeExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#MultiplicativeExpression.

func (*Visitor) VisitNewExpression

func (v *Visitor) VisitNewExpression(ctx *parser.NewExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#NewExpression.

func (*Visitor) VisitNotExpression

func (v *Visitor) VisitNotExpression(ctx *parser.NotExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#NotExpression.

func (*Visitor) VisitNumericLiteral

func (v *Visitor) VisitNumericLiteral(ctx *parser.NumericLiteralContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#numericLiteral.

func (*Visitor) VisitObjectLiteral

func (v *Visitor) VisitObjectLiteral(ctx *parser.ObjectLiteralContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#objectLiteral.

func (*Visitor) VisitObjectLiteralExpression

func (v *Visitor) VisitObjectLiteralExpression(ctx *parser.ObjectLiteralExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ObjectLiteralExpression.

func (*Visitor) VisitParenthesizedExpression

func (v *Visitor) VisitParenthesizedExpression(ctx *parser.ParenthesizedExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ParenthesizedExpression.

func (*Visitor) VisitPostDecreaseExpression

func (v *Visitor) VisitPostDecreaseExpression(ctx *parser.PostDecreaseExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#PostDecreaseExpression.

func (*Visitor) VisitPostIncrementExpression

func (v *Visitor) VisitPostIncrementExpression(ctx *parser.PostIncrementExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#PostIncrementExpression.

func (*Visitor) VisitPowerExpression

func (v *Visitor) VisitPowerExpression(ctx *parser.PowerExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#PowerExpression.

func (*Visitor) VisitPreDecreaseExpression

func (v *Visitor) VisitPreDecreaseExpression(ctx *parser.PreDecreaseExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#PreDecreaseExpression.

func (*Visitor) VisitPreIncrementExpression

func (v *Visitor) VisitPreIncrementExpression(ctx *parser.PreIncrementExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#PreIncrementExpression.

func (*Visitor) VisitProgram

func (v *Visitor) VisitProgram(ctx *parser.ProgramContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#program.

func (*Visitor) VisitPropertyExpressionAssignment

func (v *Visitor) VisitPropertyExpressionAssignment(ctx *parser.PropertyExpressionAssignmentContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#PropertyExpressionAssignment.

func (*Visitor) VisitPropertyGetter

func (v *Visitor) VisitPropertyGetter(ctx *parser.PropertyGetterContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#PropertyGetter.

func (*Visitor) VisitPropertyName

func (v *Visitor) VisitPropertyName(ctx *parser.PropertyNameContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#propertyName.

func (*Visitor) VisitPropertySetter

func (v *Visitor) VisitPropertySetter(ctx *parser.PropertySetterContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#PropertySetter.

func (*Visitor) VisitPropertyShorthand

func (v *Visitor) VisitPropertyShorthand(ctx *parser.PropertyShorthandContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#PropertyShorthand.

func (*Visitor) VisitRelationalExpression

func (v *Visitor) VisitRelationalExpression(ctx *parser.RelationalExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#RelationalExpression.

func (*Visitor) VisitReservedWord

func (v *Visitor) VisitReservedWord(ctx *parser.ReservedWordContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#reservedWord.

func (*Visitor) VisitReturnStatement

func (v *Visitor) VisitReturnStatement(ctx *parser.ReturnStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#returnStatement.

func (*Visitor) VisitSetter

func (v *Visitor) VisitSetter(ctx *parser.SetterContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#setter.

func (*Visitor) VisitSourceElement

func (v *Visitor) VisitSourceElement(ctx *parser.SourceElementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#sourceElement.

func (*Visitor) VisitSourceElements

func (v *Visitor) VisitSourceElements(ctx *parser.SourceElementsContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#sourceElements.

func (*Visitor) VisitStatement

func (v *Visitor) VisitStatement(ctx *parser.StatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#statement.

func (*Visitor) VisitStatementList

func (v *Visitor) VisitStatementList(ctx *parser.StatementListContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#statementList.

func (*Visitor) VisitSuperExpression

func (v *Visitor) VisitSuperExpression(ctx *parser.SuperExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#SuperExpression.

func (*Visitor) VisitSwitchStatement

func (v *Visitor) VisitSwitchStatement(ctx *parser.SwitchStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#switchStatement.

func (*Visitor) VisitTemplateStringExpression

func (v *Visitor) VisitTemplateStringExpression(ctx *parser.TemplateStringExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#TemplateStringExpression.

func (*Visitor) VisitTerminal

func (v *Visitor) VisitTerminal(node antlr.TerminalNode) interface{}

func (*Visitor) VisitTernaryExpression

func (v *Visitor) VisitTernaryExpression(ctx *parser.TernaryExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#TernaryExpression.

func (*Visitor) VisitThisExpression

func (v *Visitor) VisitThisExpression(ctx *parser.ThisExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#ThisExpression.

func (*Visitor) VisitThrowStatement

func (v *Visitor) VisitThrowStatement(ctx *parser.ThrowStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#throwStatement.

func (*Visitor) VisitTryStatement

func (v *Visitor) VisitTryStatement(ctx *parser.TryStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#tryStatement.

func (*Visitor) VisitTypeofExpression

func (v *Visitor) VisitTypeofExpression(ctx *parser.TypeofExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#TypeofExpression.

func (*Visitor) VisitUnaryMinusExpression

func (v *Visitor) VisitUnaryMinusExpression(ctx *parser.UnaryMinusExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#UnaryMinusExpression.

func (*Visitor) VisitUnaryPlusExpression

func (v *Visitor) VisitUnaryPlusExpression(ctx *parser.UnaryPlusExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#UnaryPlusExpression.

func (*Visitor) VisitVarModifier

func (v *Visitor) VisitVarModifier(ctx *parser.VarModifierContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#varModifier.

func (*Visitor) VisitVariableDeclaration

func (v *Visitor) VisitVariableDeclaration(ctx *parser.VariableDeclarationContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#variableDeclaration.

func (*Visitor) VisitVariableDeclarationList

func (v *Visitor) VisitVariableDeclarationList(ctx *parser.VariableDeclarationListContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#variableDeclarationList.

func (*Visitor) VisitVariableStatement

func (v *Visitor) VisitVariableStatement(ctx *parser.VariableStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#variableStatement.

func (*Visitor) VisitVoidExpression

func (v *Visitor) VisitVoidExpression(ctx *parser.VoidExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#VoidExpression.

func (*Visitor) VisitWhileStatement

func (v *Visitor) VisitWhileStatement(ctx *parser.WhileStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#WhileStatement.

func (*Visitor) VisitWithStatement

func (v *Visitor) VisitWithStatement(ctx *parser.WithStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#withStatement.

func (*Visitor) VisitYieldExpression

func (v *Visitor) VisitYieldExpression(ctx *parser.YieldExpressionContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#YieldExpression.

func (*Visitor) VisitYieldStatement

func (v *Visitor) VisitYieldStatement(ctx *parser.YieldStatementContext) parser.VisitorResult

Visit a parse tree produced by JavaScriptParser#yieldStatement.

type VisitorError

type VisitorError struct {
	Line   int
	Column int
	Text   string
}

Directories

Path Synopsis
go
js

Jump to

Keyboard shortcuts

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