MCPcopy Create free account
hub / github.com/dop251/goja / parseRegExpLiteral

Method parseRegExpLiteral

parser/expression.go:221–258  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

219}
220
221func (self *_parser) parseRegExpLiteral() *ast.RegExpLiteral {
222
223 offset := self.chrOffset - 1 // Opening slash already gotten
224 if self.token == token.QUOTIENT_ASSIGN {
225 offset -= 1 // =
226 }
227 idx := self.idxOf(offset)
228
229 pattern, _, err := self.scanString(offset, false)
230 endOffset := self.chrOffset
231
232 if err == "" {
233 pattern = pattern[1 : len(pattern)-1]
234 }
235
236 flags := ""
237 if !isLineTerminator(self.chr) && !isLineWhiteSpace(self.chr) {
238 self.next()
239
240 if self.token == token.IDENTIFIER { // gim
241
242 flags = self.literal
243 self.next()
244 endOffset = self.chrOffset - 1
245 }
246 } else {
247 self.next()
248 }
249
250 literal := self.str[offset:endOffset]
251
252 return &ast.RegExpLiteral{
253 Idx: idx,
254 Literal: literal,
255 Pattern: pattern,
256 Flags: flags,
257 }
258}
259
260func (self *_parser) isBindingId(tok token.Token) bool {
261 if tok == token.IDENTIFIER {

Callers 1

Calls 5

idxOfMethod · 0.95
scanStringMethod · 0.95
nextMethod · 0.95
isLineTerminatorFunction · 0.85
isLineWhiteSpaceFunction · 0.85

Tested by

no test coverage detected