예제 #1
0
 public void run(MInputStream input)
 {
     inputByte    = 0;
     index        = 0;
     lineNumber   = 1;
     stayNextStep = false;
     running      = true;
     while ((!input.end() || stayNextStep) && running && ok)
     {
         if (!stayNextStep)
         {
             index++;
             inputByte = input.readByte();
             buffer[index % BUFFER_SIZE] = inputByte;
             if (inputByte == '\n')
             {
                 lineNumber++;
             }
         }
         else
         {
             stayNextStep = false;
         }
         MeanCS.printn("[ ").print((char)(inputByte)).print(" ]").print("\n");
         running = step(inputByte);
     }
     if (!stayNextStep)
     {
         index++;
     }
 }
예제 #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("\"");
        }