Interface GR<P extends Pointer<?,​?,​P>,​T extends Tok<P>>

Type Parameters:
P - Указатель на входную последовательность символов
T - Токен/Лексема
All Superinterfaces:
java.util.function.Function<P,​java.util.Optional<T>>
All Known Implementing Classes:
ProxyGR

public interface GR<P extends Pointer<?,​?,​P>,​T extends Tok<P>>
extends java.util.function.Function<P,​java.util.Optional<T>>
Граматическое правило - это токое правло согласно которому входная последовтельность символов либо принадлежит (совпадает) с данным правилом , либо нет.

Примеры правил:
Правило идентификаторов языка java:

  • идентифактор может содержать буквы, цифры и знак подчеркивания
  • идентифактор должен начинаться с буквы или знака подчеркивания
Данное правило может быть записано в форме Бэкуса Нура:
идентификатор ::= (буква | подчеркивание) {буква | цифра | подчеркивание}
Где:
  • Круглые скобки () - задают группу правил
  • Фигурные скобки {} - задают, что содержание может повторяться 0 и более раз
  • Вертикальная черта | - задает альтернативное правило

В коде java может быть представленно так:

 GR letter = ...;
 GR digit  = ...;
 GR underscope  = ...;
 GR firstIdSymbol = letter.another( underscope ).map();
 GR otherIdSymbol = letter.another( underscope ).map().another( digit ).map();
 GR id = firstIdSymbol.next(otherIdSymbol.repeat().map()).map().another(
           firstIdSymbol
         ).map()
 
  • Method Summary

    Modifier and Type Method Description
    default <U extends Tok<P>>
    AltOP<P,​U>
    another​(GR<P,​? extends Tok<P>> rule)
    Правило альтрентивного выбора - т.е. когда входная последовательность символов может быть распознана текущим правилом или альтернативным
    default java.lang.String name()
    Возвращает имя правила.
    default GR<P,​T> name​(java.lang.String name)
    Указывает имя правила.
    default <U extends Tok<P>>
    Sq2OP<P,​T,​U>
    next​(GR<P,​U> then)
    Создает новое правило - последовательность правил: текущего и последущего правила для анализа цепочкивходых символов.
    default RptOP<P,​T> repeat()
    Создает правило из текущего - которое говорит о повторе 1 и более раз

    Methods inherited from interface java.util.function.Function

    andThen, apply, compose
  • Method Details

    • next

      default <U extends Tok<P>> Sq2OP<P,​T,​U> next​(GR<P,​U> then)
      Создает новое правило - последовательность правил: текущего и последущего правила для анализа цепочкивходых символов.
      Допустим текущее правило задает firstIdSymbol, то для создания id создадим правило id = this.next( otherIdSymbol.repeat() )
      Type Parameters:
      U - тип лексемы
      Parameters:
      then - следующее правило
      Returns:
      Последовательность правил
    • repeat

      default RptOP<P,​T> repeat()
      Создает правило из текущего - которое говорит о повторе 1 и более раз
      Returns:
      Правило повтора
    • another

      default <U extends Tok<P>> AltOP<P,​U> another​(GR<P,​? extends Tok<P>> rule)
      Правило альтрентивного выбора - т.е. когда входная последовательность символов может быть распознана текущим правилом или альтернативным
      Type Parameters:
      U - токен
      Parameters:
      rule - алтернатиное правило
      Returns:
      Альтернативное правило
    • name

      default GR<P,​T> name​(java.lang.String name)
      Указывает имя правила. Желательно это правило переопределить, по умолчанию используется медленная реализация GRNameImpl
      Parameters:
      name - имя
      Returns:
      self ссылка
    • name

      default java.lang.String name()
      Возвращает имя правила. Желательно это правило переопределить, по умолчанию используется медленная реализация GRNameImpl
      Returns:
      имя или null