public static Token LogError(string fileName, Token token, string message, int lineNo) { int col = 0; if (token != null) { col = token.Col; } else { if (LastToken != null) { if (LastToken.Next != null) { col = LastToken.Col; } else { col = LastToken.Col; } } } if (lineNo >= 0) { ErrorTable.Add(fileName, currentLine, token, message); } // OnErrorLogged(SourceDocument, new LogErrorEventArgs(token, message, col, lineNo)); if (token != null) { return(token.Next); } return(token); }
public static Symbol Add(string fileName, int line, Token token, string name, int value) { if (Labels.Exists(x => x.FileName == fileName && x.Name == name)) { Symbol s1 = new Symbol(fileName, name, token, value, -1); s1.UsedAtLines.Add(new UsedAt(fileName, token.Line, token)); Labels.Add(s1); ErrorTable.Add(fileName, line, token, "Duplicate Label"); return(null); } Symbol label = new Symbol(fileName, name, token, value, line); Labels.Add(label); return(label); }