예제 #1
0
 public void next(byte nextState)
 {
     currentState = nextState;
     { if (MeanCS.debug)
       {
           MeanCS.verbosen("Next state: ").print(stateNames[(int)currentState]).print("\n");
       }
     };
 }
예제 #2
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("\"");
        }
예제 #3
0
        private static void addToken(int tokenType)
        {
            string data = automata.getString(lastStart, automata.getIndex() - lastStart);

            MeanCS.verbosen("NEW TOKEN: ").print(data).print("\n");
            MNode token = new MNode(currentExpr, tokenType, data);

            if (currentToken == null)
            {
                currentExpr.child = token;
            }
            else
            {
                currentToken.next = token;
            }
            currentExpr.numChildren++;
            currentToken = token;
            lastStart    = automata.getIndex();
        }
예제 #4
0
 public void print()
 {
     for (int i = 0; i <= stateCounter; i++)
     {
         MeanCS.verbosen("state: ").print(i).print("\n");
         for (int n = 0; n < 256; n++)
         {
             byte foo = tr[(i * 256) + n];
             if (foo == 0xff)
             {
                 MeanCS.verbosen(".");
             }
             else
             {
                 MeanCS.verbosen(foo);
             }
         }
         MeanCS.verbose("");
     }
 }
예제 #5
0
        public void printTree(MNode _node, int depth, bool deep)
        {
            System.Diagnostics.Debug.Assert(_node != null, "<printTree: empty node>");
            MNode node = _node;

            for (int i = 0; i < depth; i++)
            {
                MeanCS.verbosen("  ");
            }
            MeanCS.verbosen("[").print(node.data).print("]");
            // if (node.numChildren > 0) { VR(" + ")X(node.numChildren); }
            if (deep)
            {
                MeanCS.verbose("");
            }
            if (node.child != null && deep)
            {
                printTree(node.child, depth + 1, deep);
            }
            if (node.next != null)
            {
                printTree(node.next, depth, deep);
            }
        }