
org.antlr.v4.misc.Utils Maven / Gradle / Ivy
/*
* 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.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);
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy