• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..11-Oct-2021-

README.markdownH A D11-Oct-20214.1 KiB185129

error.goH A D11-Oct-20215.5 KiB176114

expression.goH A D11-Oct-202131.9 KiB1,3231,197

lexer.goH A D11-Oct-202123.9 KiB1,1121,016

lexer_test.goH A D11-Oct-20216.3 KiB379311

marshal_test.goH A D11-Oct-202115.5 KiB963868

parser.goH A D11-Oct-20216.8 KiB270169

parser_test.goH A D11-Oct-202130.4 KiB1,174795

regexp.goH A D11-Oct-20219.1 KiB458383

regexp_test.goH A D11-Oct-20213.8 KiB192127

scope.goH A D11-Oct-2021939 4738

statement.goH A D11-Oct-202120 KiB856726

testutil_test.goH A D11-Oct-2021953 5041

README.markdown

1# parser
2--
3    import "github.com/dop251/goja/parser"
4
5Package parser implements a parser for JavaScript. Borrowed from https://github.com/robertkrimen/otto/tree/master/parser
6
7    import (
8        "github.com/dop251/goja/parser"
9    )
10
11Parse and return an AST
12
13    filename := "" // A filename is optional
14    src := `
15        // Sample xyzzy example
16        (function(){
17            if (3.14159 > 0) {
18                console.log("Hello, World.");
19                return;
20            }
21
22            var xyzzy = NaN;
23            console.log("Nothing happens.");
24            return xyzzy;
25        })();
26    `
27
28    // Parse some JavaScript, yielding a *ast.Program and/or an ErrorList
29    program, err := parser.ParseFile(nil, filename, src, 0)
30
31
32### Warning
33
34The parser and AST interfaces are still works-in-progress (particularly where
35node types are concerned) and may change in the future.
36
37## Usage
38
39#### func  ParseFile
40
41```go
42func ParseFile(fileSet *file.FileSet, filename string, src interface{}, mode Mode) (*ast.Program, error)
43```
44ParseFile parses the source code of a single JavaScript/ECMAScript source file
45and returns the corresponding ast.Program node.
46
47If fileSet == nil, ParseFile parses source without a FileSet. If fileSet != nil,
48ParseFile first adds filename and src to fileSet.
49
50The filename argument is optional and is used for labelling errors, etc.
51
52src may be a string, a byte slice, a bytes.Buffer, or an io.Reader, but it MUST
53always be in UTF-8.
54
55    // Parse some JavaScript, yielding a *ast.Program and/or an ErrorList
56    program, err := parser.ParseFile(nil, "", `if (abc > 1) {}`, 0)
57
58#### func  ParseFunction
59
60```go
61func ParseFunction(parameterList, body string) (*ast.FunctionLiteral, error)
62```
63ParseFunction parses a given parameter list and body as a function and returns
64the corresponding ast.FunctionLiteral node.
65
66The parameter list, if any, should be a comma-separated list of identifiers.
67
68#### func  ReadSource
69
70```go
71func ReadSource(filename string, src interface{}) ([]byte, error)
72```
73
74#### func  TransformRegExp
75
76```go
77func TransformRegExp(pattern string) (string, error)
78```
79TransformRegExp transforms a JavaScript pattern into a Go "regexp" pattern.
80
81re2 (Go) cannot do backtracking, so the presence of a lookahead (?=) (?!) or
82backreference (\1, \2, ...) will cause an error.
83
84re2 (Go) has a different definition for \s: [\t\n\f\r ]. The JavaScript
85definition, on the other hand, also includes \v, Unicode "Separator, Space",
86etc.
87
88If the pattern is invalid (not valid even in JavaScript), then this function
89returns the empty string and an error.
90
91If the pattern is valid, but incompatible (contains a lookahead or
92backreference), then this function returns the transformation (a non-empty
93string) AND an error.
94
95#### type Error
96
97```go
98type Error struct {
99	Position file.Position
100	Message  string
101}
102```
103
104An Error represents a parsing error. It includes the position where the error
105occurred and a message/description.
106
107#### func (Error) Error
108
109```go
110func (self Error) Error() string
111```
112
113#### type ErrorList
114
115```go
116type ErrorList []*Error
117```
118
119ErrorList is a list of *Errors.
120
121#### func (*ErrorList) Add
122
123```go
124func (self *ErrorList) Add(position file.Position, msg string)
125```
126Add adds an Error with given position and message to an ErrorList.
127
128#### func (ErrorList) Err
129
130```go
131func (self ErrorList) Err() error
132```
133Err returns an error equivalent to this ErrorList. If the list is empty, Err
134returns nil.
135
136#### func (ErrorList) Error
137
138```go
139func (self ErrorList) Error() string
140```
141Error implements the Error interface.
142
143#### func (ErrorList) Len
144
145```go
146func (self ErrorList) Len() int
147```
148
149#### func (ErrorList) Less
150
151```go
152func (self ErrorList) Less(i, j int) bool
153```
154
155#### func (*ErrorList) Reset
156
157```go
158func (self *ErrorList) Reset()
159```
160Reset resets an ErrorList to no errors.
161
162#### func (ErrorList) Sort
163
164```go
165func (self ErrorList) Sort()
166```
167
168#### func (ErrorList) Swap
169
170```go
171func (self ErrorList) Swap(i, j int)
172```
173
174#### type Mode
175
176```go
177type Mode uint
178```
179
180A Mode value is a set of flags (or 0). They control optional parser
181functionality.
182
183--
184**godocdown** http://github.com/robertkrimen/godocdown
185