Your browser does not support JavaScript and this site utilizes JavaScript to build content and provide links to additional information. You should either enable JavaScript in your browser settings or use a browser that supports JavaScript in order to take full advantage of this site.

1 /***** BEGIN LICENSE BLOCK *****2 * Version: CPL 1.0/GPL 2.0/LGPL 2.13 *4 * The contents of this file are subject to the Common Public5 * License Version 1.0 (the "License"); you may not use this file6 * except in compliance with the License. You may obtain a copy of7 * the License at http://www.eclipse.org/legal/cpl-v10.html8 *9 * Software distributed under the License is distributed on an "AS10 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or11 * implied. See the License for the specific language governing12 * rights and limitations under the License.13 *14 * Copyright (C) 2002 Benoit Cerrina <b.cerrina@wanadoo.fr>15 * Copyright (C) 2002 Jan Arne Petersen <jpetersen@uni-bonn.de>16 * Copyright (C) 2004 Anders Bengtsson <ndrsbngtssn@yahoo.se>17 * Copyright (C) 2004 Thomas E Enebo <enebo@acm.org>18 * Copyright (C) 2004 Stefan Matthias Aust <sma@3plus4.de>19 * 20 * Alternatively, the contents of this file may be used under the terms of21 * either of the GNU General Public License Version 2 or later (the "GPL"),22 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),23 * in which case the provisions of the GPL or the LGPL are applicable instead24 * of those above. If you wish to allow use of your version of this file only25 * under the terms of either the GPL or the LGPL, and not to allow others to26 * use your version of this file under the terms of the CPL, indicate your27 * decision by deleting the provisions above and replace them with the notice28 * and other provisions required by the GPL or the LGPL. If you do not delete29 * the provisions above, a recipient may use your version of this file under30 * the terms of any one of the CPL, the GPL or the LGPL.31 ***** END LICENSE BLOCK *****/32 package org.jruby.ast;33 34 importorg.jruby.ast.types.ILiteralNode;35 importorg.jruby.ast.visitor.NodeVisitor;36 importorg.jruby.evaluator.Instruction;37 importorg.jruby.lexer.yacc.ISourcePosition;38 39 /**40 * Dynamic regexp node.41 * a regexp is dynamic if it contains some expressions which will need to be evaluated42 * everytime the regexp is used for a match43 * @author jpetersen44 */45 publicclass DRegexpNode extendsListNodeimplementsILiteralNode {46 staticfinallong serialVersionUID = 7307853378003210140L;47 48 privatefinalint options;49 privatefinalboolean once;50 51 public DRegexpNode(ISourcePosition position) {52 this(position, 0, false);53 }54 55 public DRegexpNode(ISourcePosition position, DStrNode node, int options, boolean once) {56 super(position, NodeTypes.DREGEXPNODE);57 58 this.options = options;59 this.once = once;60 61 addAll(node);62 }63 64 public DRegexpNode(ISourcePosition position, int options, boolean once) {65 super(position, NodeTypes.DREGEXPNODE);66 67 this.options = options;68 this.once = once;69 }70 71 /**72 * Accept for the visitor pattern.73 * @param iVisitor the visitor74 **/75 publicInstruction accept(NodeVisitor iVisitor) {76 return iVisitor.visitDRegxNode(this);77 }78 79 /**80 * Gets the once.81 * @return Returns a boolean82 */83 publicboolean getOnce() {84 return once;85 }86 87 /**88 * Gets the options.89 * @return Returns a int90 */91 publicint getOptions() {92 return options;93 }94 }95