/// <summary>Lua Exception for parse errors.</summary> /// <param name="position"></param> /// <param name="sMessage"></param> /// <param name="innerException"></param> internal LuaParseException(Position position, string sMessage, Exception innerException) : base(sMessage, innerException) { this.sFileName = position.FileName; this.iLine = position.Line; this.iColumn = position.Col; this.iIndex = position.Index; } // ctor
} // proc NextChar /// <summary>Erzeugt einen Token</summary> /// <param name="iKind">Art des Tokens</param> /// <param name="iNewState"></param> /// <returns>Token</returns> private Token CreateToken(int iNewState, LuaToken iKind) { iState = iNewState; Token tok = new Token(iKind, CurValue, fStart, fEnd); fStart = fEnd; sbCur = null; return tok; } // func CreateToken
} // proc EatChar /// <summary>Nächstes Zeichen ohne eine Kopie anzufertigen</summary> /// <param name="iNewState">Neuer Status des Scanners</param> private void NextChar(int iNewState) { fEnd = new Position(document, iCurrentLine, iCurrentColumn, iCurrentIndex); cCur = Read(); iState = iNewState; } // proc NextChar
private bool lSkipComments = true; // Should the scanner skip comments #region -- Ctor/Dtor -------------------------------------------------------------- /// <summary>Creates the lexer für the lua parser</summary> /// <param name="sFileName">Filename</param> /// <param name="tr">Input for the scanner, will be disposed on the lexer dispose.</param> /// <param name="iCurrentLine"></param> /// <param name="iCurrentColumn"></param> public LuaLexer(string sFileName, TextReader tr, int iCurrentLine = 1, int iCurrentColumn = 1) { this.document = Expression.SymbolDocument(sFileName); this.iCurrentLine = iCurrentLine; this.iCurrentColumn = iCurrentColumn; this.tr = tr; lEof = false; fStart = fEnd = new Position(document, iCurrentLine, iCurrentColumn, iCurrentIndex); cCur = Read(); // Lies das erste Zeichen aus dem Buffer } // ctor
/// <summary>Erzeugt einen Token.</summary> /// <param name="iKind">Type des Wertes.</param> /// <param name="sValue">Der Wert.</param> /// <param name="fStart">Beginn des Tokens</param> /// <param name="fEnd">Ende des Tokens</param> internal Token(LuaToken iKind, string sValue, Position fStart, Position fEnd) { this.iKind = iKind; this.fStart = fStart; this.fEnd = fEnd; this.sValue = sValue; } // ctor