1 /* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- 2 * 3 * This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 package org.mozilla.javascript.ast; 8 9 import org.mozilla.javascript.Token; 10 11 /** 12 * AST node for a RegExp literal. 13 * Node type is {@link Token#REGEXP}.<p> 14 */ 15 public class RegExpLiteral extends AstNode { 16 17 private String value; 18 private String flags; 19 20 { 21 type = Token.REGEXP; 22 } 23 RegExpLiteral()24 public RegExpLiteral() { 25 } 26 RegExpLiteral(int pos)27 public RegExpLiteral(int pos) { 28 super(pos); 29 } 30 RegExpLiteral(int pos, int len)31 public RegExpLiteral(int pos, int len) { 32 super(pos, len); 33 } 34 35 /** 36 * Returns the regexp string without delimiters 37 */ getValue()38 public String getValue() { 39 return value; 40 } 41 42 /** 43 * Sets the regexp string without delimiters 44 * @throws IllegalArgumentException} if value is {@code null} 45 */ setValue(String value)46 public void setValue(String value) { 47 assertNotNull(value); 48 this.value = value; 49 } 50 51 /** 52 * Returns regexp flags, {@code null} or "" if no flags specified 53 */ getFlags()54 public String getFlags() { 55 return flags; 56 } 57 58 /** 59 * Sets regexp flags. Can be {@code null} or "". 60 */ setFlags(String flags)61 public void setFlags(String flags) { 62 this.flags = flags; 63 } 64 65 @Override toSource(int depth)66 public String toSource(int depth) { 67 return makeIndent(depth) + "/" + value + "/" 68 + (flags == null ? "" : flags); 69 } 70 71 /** 72 * Visits this node. There are no children to visit. 73 */ 74 @Override visit(NodeVisitor v)75 public void visit(NodeVisitor v) { 76 v.visit(this); 77 } 78 } 79