import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.IOException; import java.io.Reader; import java.util.Arrays; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Map; import java.util.TreeMap; import java.util.Properties; import java.util.Random; import java.util.Set; import java.util.logging.Level; //-----------------------------------------------------------------------// // Translator-specific Collector class: //-----------------------------------------------------------------------// public class Collector { public void setPackage( String packageName ) { parserBlocks.setPackage( packageName ) ; } public String toString() { parserBlocks.setStartRule( baliRules.getStartName() ) ; return header( "Options block" ) + optionBlocks + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR + header( "Parser code block" ) + parserBlocks + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR + header( "Token manager declarations" ) + tknMgrBlocks + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR + header( "Standard token definitions" ) + standardTokens() + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR + header( "Bali tokens from grammar" ) + baliTokens + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR + header( "Regular-expression tokens from grammar" ) + regexTokens + Main.LINE_SEPARATOR + header( "JAVACODE blocks from grammar" ) + javaBlocks + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR + header( "Productions from Bali grammar" ) + baliRules + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR + header( "Other standard tokens:" ) + otherTokens() ; } private static String header( String message ) { return "//-----------------------------------//" + Main.LINE_SEPARATOR + "// " + message + ':' + Main.LINE_SEPARATOR + "//-----------------------------------//" + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR ; } private static String otherTokens() { return "TOKEN : {" + Main.LINE_SEPARATOR + " <IDENTIFIER: <LETTER> (<LETTER> | <DIGIT>)*>" + Main.LINE_SEPARATOR + " | <OTHER: ~[]>" + Main.LINE_SEPARATOR + "}" ; } private static String standardTokens() { return "SPECIAL_TOKEN : {\" \"|\"\\f\"|\"\\n\"|\"\\r\"|\"\\t\"}" + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR + "// COMMENTS:" + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR + "MORE : {" + Main.LINE_SEPARATOR + " \"//\" : IN_SINGLE_LINE_COMMENT" + Main.LINE_SEPARATOR + " | \"@\" : IN_SINGLE_LINE_COMMENT" + Main.LINE_SEPARATOR + " | <\"/**\" ~[\"/\"]> { input_stream.backup(1); } :" + " IN_FORMAL_COMMENT" + Main.LINE_SEPARATOR + " | \"/*\" : IN_MULTI_LINE_COMMENT" + Main.LINE_SEPARATOR + "}" + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR + "<IN_SINGLE_LINE_COMMENT>" + Main.LINE_SEPARATOR + "SPECIAL_TOKEN : {" + Main.LINE_SEPARATOR + " <SINGLE_LINE_COMMENT: " + "\"\\n\"" + " | \"\\n\\r\"" + " | \"\\r\"" + " | \"\\r\\n\"" + "> : DEFAULT" + Main.LINE_SEPARATOR + "}" + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR + "<IN_FORMAL_COMMENT>" + Main.LINE_SEPARATOR + "SPECIAL_TOKEN : {" + Main.LINE_SEPARATOR + " <FORMAL_COMMENT: \"*/\" > : DEFAULT" + Main.LINE_SEPARATOR + "}" + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR + "<IN_MULTI_LINE_COMMENT>" + Main.LINE_SEPARATOR + "SPECIAL_TOKEN : {" + Main.LINE_SEPARATOR + " <MULTI_LINE_COMMENT: \"*/\" > : DEFAULT" + Main.LINE_SEPARATOR + "}" + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR + "<IN_SINGLE_LINE_COMMENT,IN_FORMAL_COMMENT," + "IN_MULTI_LINE_COMMENT>" + Main.LINE_SEPARATOR + "MORE : { < ~[] > }" + Main.LINE_SEPARATOR + Main.LINE_SEPARATOR + "TOKEN : {" + Main.LINE_SEPARATOR + " <#LETTER: [\"a\"-\"z\", \"A\"-\"Z\", \"_\", \"$\"]>" + Main.LINE_SEPARATOR + " | <#DIGIT: [\"0\"-\"9\"]>" + Main.LINE_SEPARATOR + "}" ; } }