Example #1
0
    } // ErrorWarnInfo

    // --- listing generation ---

    private static void PutMsg(TextWriter lst, ErrorWarn eow)
    {
        switch (eow.kind)
        {
        case EoWKind.lexErr:
            lst.Write("+LEX+");
            break;

        case EoWKind.synErr:
            lst.Write("*SYN*");
            break;

        case EoWKind.semErr:
            lst.Write("#SEM#");
            break;

        case EoWKind.warn:
            lst.Write("!WRN!");
            break;
        } // switch
        for (int i = 0; i < eow.info.col; i++)
        {
            lst.Write(" ");
        }
        lst.Write(" ^{0}", eow.info.msg);
    } // PutMsg
Example #2
0
 public static void ErrorsMethod(Utils.ModuleAction action, out String moduleName) {
   //-----------------------------------|----------------------------------------
   moduleName = MODULENAME;
   switch (action) {
     case Utils.ModuleAction.getModuleName:
       return;
     case Utils.ModuleAction.initModule:
       aps = new AbortMethod[MAXABORTPROCS];
       sp = 0;
       PushAbortMethod(DefaultAbort);
       stopParsing = null;
       eowCnt = new int[4];
       curEoW = new ErrorWarn[4];
       break;
     case Utils.ModuleAction.resetModule:
       break;
     case Utils.ModuleAction.cleanupModule:
       eowl = null;
       eowCnt = null;
       curEoW = null;
       return;
   } // switch
   // --- for initModule and resetModule ---
   eowl = null;
   numOfErrs = 0;
   numOfWarns = 0;
   for (int i = 0; i < 4; i++)
     eowCnt[i] = 0;
 } // ErrorsMethod
Example #3
0
    private static ErrorWarnInfo GetMessage(bool first, EoWKind knd)
    {
        ErrorWarn     eow  = null;
        ErrorWarnInfo eowi = null;

        if (first)
        {
            eow = eowl;
        }
        else
        {
            eow = curEoW[(int)knd].next;
        }
        while (eow != null && eow.kind != knd)
        {
            eow = eow.next;
        }
        curEoW[(int)knd] = eow;
        if (eow == null)
        {
            eowi      = new ErrorWarnInfo();
            eowi.msg  = "";
            eowi.line = 0;
            eowi.col  = 0;
        }
        else
        {
            eowi = eow.info;
        }
        return(eowi);
    } // GetMessage
    } // CallStopParsing

    // --- storage of errors found on compilation ---

    private static void EnterMessage(EoWKind knd, int line, int col, String msg)
    {
        ErrorWarn eow, prveow, nxteow;

        eowCnt[(int)knd]++;
        eow           = new ErrorWarn();
        eow.kind      = knd;
        eow.info      = new ErrorWarnInfo();
        eow.info.line = line;
        eow.info.col  = col;
        eow.info.msg  = msg;
        prveow        = null;
        nxteow        = eowl;
        while (nxteow != null && nxteow.info.line <= line)
        {
            prveow = nxteow;
            nxteow = nxteow.next;
        } // while
        while (nxteow != null && nxteow.info.line == line && nxteow.info.col <= col)
        {
            prveow = nxteow;
            nxteow = nxteow.next;
        } // while
        if (prveow == null)
        {
            eowl = eow;
        }
        else
        {
            prveow.next = eow;
        }
        eow.next = nxteow;
    } // EnterMessage
Example #5
0
    } // CallStopParsing

    // --- storage of errors found on compilation ---

    private static void EnterMessage(EoWKind knd, int line, int col, String msg)
    {
        ErrorWarn eow, prveow, nxteow;

        eowCnt[(int)knd]++;
        if (REPORT_EOW_TO_CONSOLE)
        {
            Console.Write("(" + line + ", " + col + "): ");
            switch (knd)
            {
            case EoWKind.lexErr:
                Console.Write("+LEX+");
                break;

            case EoWKind.synErr:
                Console.Write("*SYN*");
                break;

            case EoWKind.semErr:
                Console.Write("#SEM#");
                break;

            case EoWKind.warn:
                Console.Write("!WRN!");
                break;
            } // switch
            Console.Write(" " + msg);
        }     // if
        eow           = new ErrorWarn();
        eow.kind      = knd;
        eow.info      = new ErrorWarnInfo();
        eow.info.line = line;
        eow.info.col  = col;
        eow.info.msg  = msg;
        prveow        = null;
        nxteow        = eowl;
        while (nxteow != null && nxteow.info.line <= line)
        {
            prveow = nxteow;
            nxteow = nxteow.next;
        } // while
        while (nxteow != null && nxteow.info.line == line && nxteow.info.col <= col)
        {
            prveow = nxteow;
            nxteow = nxteow.next;
        } // while
        if (prveow == null)
        {
            eowl = eow;
        }
        else
        {
            prveow.next = eow;
        }
        eow.next = nxteow;
    } // EnterMessage
Example #6
0
    public static void ErrorsMethod(Utils.ModuleAction action, out String moduleName)
    {
        //-----------------------------------|----------------------------------------
        moduleName = MODULENAME;
        switch (action)
        {
        case Utils.ModuleAction.getModuleName:
            return;

        case Utils.ModuleAction.initModule:
            aps = new AbortMethod[MAXABORTPROCS];
            sp  = 0;
            PushAbortMethod(DefaultAbort);
            stopParsing = null;
            eowCnt      = new int[4];
            curEoW      = new ErrorWarn[4];
            break;

        case Utils.ModuleAction.resetModule:
            break;

        case Utils.ModuleAction.cleanupModule:
            eowl   = null;
            eowCnt = null;
            curEoW = null;
            return;
        } // switch
        // --- for initModule and resetModule ---
        eowl       = null;
        numOfErrs  = 0;
        numOfWarns = 0;
        for (int i = 0; i < 4; i++)
        {
            eowCnt[i] = 0;
        }
    } // ErrorsMethod
Example #7
0
    } // ListingShape

    public static void GenerateListing(TextReader src, TextWriter lst,
                                       ListingShape listShape)
    {
        //-----------------------------------|----------------------------------------
        ErrorWarn eow = null;
        int       lnr, skip;
        String    srcLine;

        ((StreamReader)src).BaseStream.Seek(0, SeekOrigin.Begin);

        eow = eowl;
        if (eow != null)
        {
            while (eow != null && eow.info.line < 1)
            {
                PutMsg(lst, eow);
                eow = eow.next;
            } // while
            lst.WriteLine();
        }     // if
        lnr = 1;
        for (; ;)
        {
            if (listShape == ListingShape.shortListing)
            {
                if (eow == null)
                {
                    lst.WriteLine("...");
                    break;
                } // if
                skip = eow.info.line - lnr;
                if (skip > 0)
                {
                    lst.WriteLine("...");
                    lnr = eow.info.line;
                    while (skip-- > 0)
                    {
                        srcLine = src.ReadLine();
                        if (srcLine == null)
                        {
                            break;
                        }
                    } // while
                }     // if
            }         // if
            srcLine = src.ReadLine();
            if (srcLine == null)
            {
                break;
            }
            lst.WriteLine("{0,5}| {1}", lnr, srcLine);
            while (eow != null && eow.info.line == lnr)
            {
                PutMsg(lst, eow);
                eow = eow.next;
            } // while
            lnr++;
        }     // for
        lst.WriteLine();
        while (eow != null)
        {
            PutMsg(lst, eow);
            eow = eow.next;
        } // while
        lst.WriteLine();
        lst.WriteLine("error(s) and warning(s):");
        lst.WriteLine("-----------------------");
        lst.WriteLine();
        lst.WriteLine("{0,5} lexical error(s) ", NumOfLexErrors());
        lst.WriteLine("{0,5} syntax error(s)  ", NumOfSynErrors());
        lst.WriteLine("{0,5} semantic error(s)", NumOfSemErrors());
        lst.WriteLine("{0,5} warning(s)       ", NumOfWarnings());
    } // GenerateListing
Example #8
0
  } // ErrorWarnInfo


  // --- listing generation ---

  private static void PutMsg(TextWriter lst, ErrorWarn eow) {
    switch (eow.kind) {
      case EoWKind.lexErr:
        lst.Write("+LEX+");
        break;
      case EoWKind.synErr:
        lst.Write("*SYN*");
        break;
      case EoWKind.semErr:
        lst.Write("#SEM#");
        break;
      case EoWKind.warn:
        lst.Write("!WRN!");
        break;
    } // switch 
    for (int i = 0; i < eow.info.col; i++)
      lst.Write(" ");
    lst.Write(" ^{0}", eow.info.msg);
  } // PutMsg
Example #9
0
  } // CallStopParsing


  // --- storage of errors found on compilation ---

  private static void EnterMessage(EoWKind knd, int line, int col, String msg) {
    ErrorWarn eow, prveow, nxteow;
    eowCnt[(int)knd]++;
    eow = new ErrorWarn();
    eow.kind = knd;
    eow.info = new ErrorWarnInfo();
    eow.info.line = line;
    eow.info.col = col;
    eow.info.msg = msg;
    prveow = null;
    nxteow = eowl;
    while (nxteow != null && nxteow.info.line <= line) {
      prveow = nxteow;
      nxteow = nxteow.next;
    } // while
    while (nxteow != null && nxteow.info.line == line && nxteow.info.col <= col) {
      prveow = nxteow;
      nxteow = nxteow.next;
    } // while
    if (prveow == null)
      eowl = eow;
    else
      prveow.next = eow;
    eow.next = nxteow;
  } // EnterMessage