SInput |
Библиотека предоставляет продвинутые инструменты для парсинга строк с возможностью организации точек выбора и бэктрэкинга в случае неправильного выбора.
Точка выбора позволяет восстановить состояние парсера в случае неверного выбора направления. Так точка выбора ставится:
fix cppos = input.cpЗдесь
input
– структура типа Input
. Состояние восстанавливается следующим образом:
input.bt(cppos)
def Input(s:String!):Input!
def Input bt(pos0:Int!)
Делает возврат к позиции pos0
. Восстанавливает все параметры парсера, соответствующие этой позиции (номер строки, столбца, позиция последнего перевода строки и т.д.).
Возвращает значение pos0
.
def Input failure(pos0:Int!)
Действует аналогично bt/1
, но возвращает ()
.
def Input ch:String!
def Input next: Input?
def Input nextspace: Input?
def Input nextspaceln: Input?
def Input prev:String?
def Input numeric?
def Input space?
def Input spaceln?
def Input letter?
def Input firstChar?
def Input lastChar?
def Input readstring(str: String!): String?
def Input skipspace: Input!
def Input read(c:String!): Input?
Читает одиночный символ c
. Если текущим символом является c
, то переводит указатель текущего на следующий символ и возвращает свой контекст (this
). В противном случае не изменяет состояния и возвращает ()
.
Input skipspaceln: Input!
def Input skipline: Input!
Пропускает строчку. Оставляет текущим символ перевода строки eol
или конца файла eof
.
def Input readline: String!
Считывает строчку. Оставляет текущим символ перевода строки eol
или конца файла eof
.
def Input readid: String?
def Input readid(extra:String*): String?
def Input readnumber(basis:Int!): Int?
def Input lookahead(s: String!): Unit?
Проверка, начинается ли с текущей позиции подстрока s
(считывание без сдвига позиции).
def Input param(key: String!, vals:Any*):Input!
Задание значения пользовательского параметра. Возвращает объект Input
из контекста.
def Input param(key: String!): Dyn**
Получение значения пользовательского параметра.
def Input addparam(key: String!, vals:Any*):Input!
Добавление значения к пользовательскому параметру. Возвращает объект Input
из контекста.
def eof: String!
Символ конца строки. Проверка на конец строки:
input.ch == sinput/eof
def Input digit: Int?
def Input segment(beg:Int!)*
def Input segment(beg:Int!, end:Int!)*
def Input left:Int!
def Input top:Int!
def Input nl1:Int!
Позиция последней новой строчки. Равна -1
, если не существует.
def Input nl2:Int!
Позиция предпоследней новой строчки. Равна -1
, если не существует.
def Input nl3:Int!
Позиция пред-предпоследней новой строчки. Равна -1
, если не существует.
def Input buffer:String*
Получение текущего состояния буфера.
def Input buffer(s:String!): Input!
Добавление строки в буфер.
def Input bufferStart
Очищение буфера.