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.
The newest version!
/*
* Copyright (c) 2012-2017 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.IntegerList;
import org.antlr.v4.tool.ast.GrammarAST;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
/** */
public class Utils {
public static final int INTEGER_POOL_MAX_VALUE = 1000;
public interface Filter {
boolean select(T t);
}
public interface Func0 {
TResult exec();
}
public interface Func1 {
TResult exec(T1 arg1);
}
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 void writeSerializedATNIntegerHistogram(String filename, IntegerList serializedATN) {
HashMap histo = new HashMap<>();
for (int i : serializedATN.toArray()) {
if ( histo.containsKey(i) ) {
histo.put(i, histo.get(i) + 1);
}
else {
histo.put(i, 1);
}
}
TreeMap sorted = new TreeMap<>(histo);
String output = "";
output += "value,count\n";
for (int key : sorted.keySet()) {
output += key+","+sorted.get(key)+"\n";
}
try {
Files.write(Paths.get(filename), output.getBytes(StandardCharsets.UTF_8));
}
catch (IOException ioe) {
System.err.println(ioe);
}
}
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.exec(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, Filter filter) {
for (int i=0; i int lastIndexOf(List extends T> elems, Filter filter) {
for (int i=elems.size()-1; i>=0; i--) {
if ( filter.select(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 - 2024 Weber Informatics LLC | Privacy Policy