Ejemplo n.º 1
0
 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]");
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
    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());
        }
    }
Ejemplo n.º 4
0
        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("\"");
        }
Ejemplo n.º 5
0
 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...");
 }
Ejemplo n.º 6
0
 static internal void printTitle(string s)
 {
     MeanCS.print("\n    ByteAutomata (c) 2020, Meanwhale");
     MeanCS.print("    https://github.com/Meanwhale/ByteAutomata\n");
 }