Spec-Zone.ru › Nim

std/lexbase

Source Edit

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

Импорты

strutils, streams

Типы

BaseLexer = object of RootObj
  bufpos*: int               ## the current position within the buffer
  buf*: string               ## the buffer itself
  ## the input stream
  lineNumber*: int           ## the current line number
  offsetBase*: int
базовый лексический анализатор. Наследуйте ваш лексический анализатор от этого объекта. Source Edit

Константы

EndOfFile = '\x00'
маркер конца файла Source Edit
NewLines = {'\r', '\n'}
Source Edit

Процедуры

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

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

Spec-Zone.ru

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