--- Main.java.orig 2000-09-06 16:09:47.000000000 +0200 +++ Main.java 2024-02-21 16:03:00.139049849 +0100 @@ -1068,8 +1068,15 @@ // Added 6/24/98 Raimondas Lencevicius // May be made more efficient by replacing String operations // Assumes correctly formed input String. Performs no error checking + + if (Main.staticFlag) { // S.M.Pericas + m_outstream.println("\tstatic private int[][] unpackFromString"+ + "(int size1, int size2, String st) {"); + } + else { m_outstream.println("\tprivate int[][] unpackFromString"+ "(int size1, int size2, String st) {"); + } m_outstream.println("\t\tint colonIndex = -1;"); m_outstream.println("\t\tString lengthString;"); m_outstream.println("\t\tint sequenceLength = 0;"); @@ -1212,13 +1219,23 @@ int[] yy_cmap = new int[m_spec.m_ccls_map.length]; for (i = 0; i < m_spec.m_ccls_map.length; ++i) yy_cmap[i] = m_spec.m_col_map[m_spec.m_ccls_map[i]]; + if (Main.staticFlag) { + m_outstream.print("\tstatic private int yy_cmap[] = unpackFromString("); + } + else { m_outstream.print("\tprivate int yy_cmap[] = unpackFromString("); + } emit_table_as_string(new int[][] { yy_cmap }); m_outstream.println(")[0];"); m_outstream.println(); // CSA: modified yy_rmap to use string packing 9-Aug-1999 + if (Main.staticFlag) { + m_outstream.print("\tstatic private int yy_rmap[] = unpackFromString("); + } + else { m_outstream.print("\tprivate int yy_rmap[] = unpackFromString("); + } emit_table_as_string(new int[][] { m_spec.m_row_map }); m_outstream.println(")[0];"); m_outstream.println(); @@ -1233,8 +1250,14 @@ CUtility.assert(dtrans.m_dtrans.length==m_spec.m_dtrans_ncols); yy_nxt[elem] = dtrans.m_dtrans; } + if (Main.staticFlag) { + m_outstream.print + ("\tstatic private int yy_nxt[][] = unpackFromString("); + } + else { m_outstream.print ("\tprivate int yy_nxt[][] = unpackFromString("); + } emit_table_as_string(yy_nxt); m_outstream.println(");"); m_outstream.println(); @@ -3821,18 +3844,35 @@ /*************************************************************** Function: main **************************************************************/ + public static boolean staticFlag = false; + + public static void printUsage() { + System.out.println("Usage: JLex.Main [-static] "); + System.exit(1); + } + public static void main ( String arg[] ) throws java.io.IOException { + int i; CLexGen lg; - if (arg.length < 1) - { - System.out.println("Usage: JLex.Main "); - return; + // Parse options starting with '-' + for (i = 0; i < arg.length && arg[i].charAt(0) == '-'; i++) { + if (arg[i].equals("-static")) { + staticFlag = true; + } + else { + printUsage(); + } + } + + // Enough arguments left ? + if (arg.length - i < 1) { + printUsage(); } /* Note: For debuging, it may be helpful to remove the try/catch @@ -3840,7 +3880,7 @@ This gives more information. */ try { - lg = new CLexGen(arg[0]); + lg = new CLexGen(arg[i]); lg.generate(); } catch (Error e)