()
| 219 | } |
| 220 | |
| 221 | func (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 | |
| 260 | func (self *_parser) isBindingId(tok token.Token) bool { |
| 261 | if tok == token.IDENTIFIER { |
no test coverage detected