org.antlr.v4.misc.Utils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of antlr4 Show documentation
Show all versions of antlr4 Show documentation
The ANTLR 4 grammar compiler.
/*
* Copyright (c) 2012 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD-3-Clause license that
* can be found in the LICENSE.txt file in the project root.
*/
package org.antlr.v4.misc;
import org.antlr.v4.runtime.misc.Func1;
import org.antlr.v4.runtime.misc.IntegerList;
import org.antlr.v4.runtime.misc.Predicate;
import org.antlr.v4.tool.ast.GrammarAST;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/** */
public class Utils {
public static final int INTEGER_POOL_MAX_VALUE = 1000;
static Integer[] ints = new Integer[INTEGER_POOL_MAX_VALUE+1];
public static String stripFileExtension(String name) {
if ( name==null ) return null;
int lastDot = name.lastIndexOf('.');
if ( lastDot<0 ) return name;
return name.substring(0, lastDot);
}
public static String join(Object[] a, String separator) {
StringBuilder buf = new StringBuilder();
for (int i=0; i linesL = Arrays.asList(lines);
StringBuilder buf = new StringBuilder();
for (String l : linesL) {
buf.append(l);
buf.append('\n');
}
return buf.toString();
}
public static List nodesToStrings(List nodes) {
if ( nodes == null ) return null;
List a = new ArrayList();
for (T t : nodes) a.add(t.getText());
return a;
}
// public static List list(T... values) {
// List x = new ArrayList(values.length);
// for (T v : values) {
// if ( v!=null ) x.add(v);
// }
// return x;
// }
public static String capitalize(String s) {
return Character.toUpperCase(s.charAt(0)) + s.substring(1);
}
public static String decapitalize(String s) {
return Character.toLowerCase(s.charAt(0)) + s.substring(1);
}
/** apply methodName to list and return list of results. method has
* no args. This pulls data out of a list essentially.
*/
public static List select(List list, Func1 selector) {
if ( list==null ) return null;
List b = new ArrayList();
for (From f : list) {
b.add(selector.eval(f));
}
return b;
}
/** Find exact object type or subclass of cl in list */
public static T find(List> ops, Class cl) {
for (Object o : ops) {
if ( cl.isInstance(o) ) return cl.cast(o);
// if ( o.getClass() == cl ) return o;
}
return null;
}
public static int indexOf(List extends T> elems, Predicate super T> match) {
for (int i=0; i int lastIndexOf(List extends T> elems, Predicate super T> match) {
for (int i=elems.size()-1; i>=0; i--) {
if ( match.eval(elems.get(i)) ) return i;
}
return -1;
}
public static void setSize(List> list, int size) {
if (size < list.size()) {
list.subList(size, list.size()).clear();
} else {
while (size > list.size()) {
list.add(null);
}
}
}
}