public void ParseError(string msg, params object[] args) { if (lastFileNamePrinted != FileName) { lastFileNamePrinted = FileName; Console.WriteLine("File {0}:", lastFileNamePrinted); } AssemblerErrors.AddError(FileName, String.Format(msg, args)); }
private void errorHandler(object sendingProcess, DataReceivedEventArgs outLine) { // parse the line of error output; it has the following format // FILENAME:LINENUMBER: ERROR MESSAGE string line = outLine.Data; if (line == null) { return; } int lineNum; // look for 2 consecutive colons separated only by decimal digits int colon1pos = -1; int colon2pos = -1; do { colon2pos = line.IndexOf(':', colon1pos + 1); if (colon2pos <= colon1pos) { return; } lineNum = 0; for (int i = colon1pos + 1; i < colon2pos; i++) { char c = line[i]; if (!Char.IsDigit(c)) { colon1pos = colon2pos; break; } lineNum = lineNum * 10 + (int)c - (int)'0'; } } while (colon1pos == colon2pos); string message = line.Substring(colon2pos + 1); AssemblerErrors.AddError(fileName, lineNum, 0, message); errorCnt++; }
// methods private void initialize() { // ArmInstructionTemplate.ForceInitialization(); AssemblerErrors.Initialize(); FileInfoTable = new List <ArmFileInfo>(); for (int i = 0; i < fileList.Count; i++) { FileInfoTable.Add(null); } for (int i = 0; i < passComplete.Length; i++) { passComplete[i] = false; } //tempFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); tempFolder = System.IO.Path.GetTempPath(); listing = new List <string>(128); symTabListing = new List <string>(32); assemblerProg = System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath); string assemblerExecutableName; if (ARMSim.ARMSimUtil.RunningOnWindows) { assemblerExecutableName = "arm-none-eabi-as.exe"; } else { assemblerExecutableName = "arm-none-eabi-as"; } assemblerProg = Path.Combine(assemblerProg, assemblerExecutableName); if (!File.Exists(assemblerProg)) { throw new AsmException("Cannot access the Gnu Assembler at path " + assemblerProg); } }