Spec-Zone.ru › Nim 1

lexbase

Этот модуль реализует базовый объект лексического анализатора с эффективной обработкой буфера. Проверки на необходимость дозагрузки буфера необходимы только в конце строк.

Импорты

strutils, streams

Типы

BaseLexer = object of RootObj
  bufpos*: int               ## the current position within the buffer
  buf*: string               ## the buffer itself
  input: Stream              ## the input stream
  lineNumber*: int           ## the current line number
  sentinel: int
  lineStart: int
  offsetBase*: int
  refillChars: set[char]
базовый лексический анализатор. Наследуйте свой лексический анализатор от этого объекта. Исходный код Редактировать

Константы

EndOfFile = '\x00'
маркер конца файла Исходный код Редактировать
NewLines = {'\c', '\n'}
Исходный код Редактировать

Процедуры

proc close(L: var BaseLexer) {...}{.raises: [Exception, IOError, OSError],
                               tags: [WriteIOEffect].}
закрывает базовый лексический анализатор. Это также закрывает связанный поток L. Исходный код Редактировать
proc handleCR(L: var BaseLexer; pos: int): int {...}{.raises: [IOError, OSError],
    tags: [ReadIOEffect].}
Вызовите эту функцию, если вы просканировали символ 'c' в буфере; она возвращает позицию для продолжения сканирования. pos должна быть позицией символа 'c'. Исходный код Редактировать
proc handleLF(L: var BaseLexer; pos: int): int {...}{.raises: [IOError, OSError],
    tags: [ReadIOEffect].}
Вызовите эту функцию, если вы просканировали символ 'L' в буфере; она возвращает позицию для продолжения сканирования. pos должна быть позицией символа 'L'. Исходный код Редактировать
proc handleRefillChar(L: var BaseLexer; pos: int): int {...}{.
    raises: [IOError, OSError], tags: [ReadIOEffect].}
Вызовите эту функцию, если символ-разделитель, отличный от новой строки, был прочитан в pos; она возвращает позицию для продолжения сканирования. Исходный код Редактировать
proc open(L: var BaseLexer; input: Stream; bufLen: int = 8192;
          refillChars: set[char] = NewLines) {...}{.raises: [IOError, OSError],
    tags: [ReadIOEffect].}
Инициализирует BaseLexer с потоком для чтения. Исходный код Редактировать
proc getColNumber(L: BaseLexer; pos: int): int {...}{.raises: [], tags: [].}
Возвращает текущую колонку. Исходный код Редактировать
proc getCurrentLine(L: BaseLexer; marker: bool = true): string {...}{.raises: [],
    tags: [].}
Возвращает текущую строку. Исходный код Редактировать

© 2006–2021 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/lexbase.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API