static internal void printArgInfo() { MeanCS.print("Command line arguments:"); MeanCS.print(" [cmd] -i read standard input, eg. [cmd] -i < ../test_script.txt"); MeanCS.print(" [cmd] -t run default test"); MeanCS.print(" [cmd] \"[string]\" parse [string]"); }
private static MNode lexInput(MInputStream input) { ByteAutomata ba = new ByteAutomata(); automata = ba; defineTransitions(ba); ba.next((byte)1); // set first state root = new MNode(null, 0, "<ROOT>"); currentExpr = root; currentBlock = null; currentToken = null; lastStart = 0; ba.run(input); ba.step((byte)' '); // ended cleanly: last white space if (currentBlock != null) { MeanCS.print("closing parenthesis missing at the end"); ba.ok = false; } if (!ba.ok) { ba.printError(); root = null; return(null); } MeanCS.verbose("\nFINISHED!"); return(root); }
public static void Main(string [] args) { try { MicroLexer.printTitle("Java"); if (args.Length == 1) { MNode root = null; if (args[0].Equals("-i")) { MicroLexer.printStdinInfo(); string input = ""; while (true) { string line = Console.ReadLine(); if (line == null) { break; } input += line + '\n'; } root = MicroLexer.lex(input); } else if (args[0].Equals("-t")) { root = MicroLexer.lex("abc 123 (def 456 [ghi])"); } else { root = MicroLexer.lex(args[0]); } MeanCS.print("TOKEN TREE:"); if (root != null) { root.printTree(true); } } else { MicroLexer.printArgInfo(); } } catch (Exception e) { MeanCS.print(e.ToString()); } }
public void printError() { MeanCS.printn("ERROR: parser state [").print(stateNames[(int)currentState]).print("]").print("\n"); MeanCS.printn("Line ").print(lineNumber).print(": \""); // print nearby code int start = index - 1; while (start > 0 && index - start < BUFFER_SIZE && (char)buffer[start % BUFFER_SIZE] != '\n') { start--; } while (++start < index) { MeanCS.verbosen((char)(buffer[start % BUFFER_SIZE])); } MeanCS.print("\""); }
static internal void printStdinInfo() { MeanCS.print("Hit Ctrl-Z (Windows) or ^D (Linux/Mac) at the start of a line and press enter to finish."); MeanCS.print("Read from standard input..."); }
static internal void printTitle(string s) { MeanCS.print("\n ByteAutomata (c) 2020, Meanwhale"); MeanCS.print(" https://github.com/Meanwhale/ByteAutomata\n"); }