package Breccia.parser;
@TagName("PatternMatcher") @DataReflector
public interface PatternMatcher extends Granum {
/** The series of match modifiers, or null if none is present.
*/
public @TagName("MatchModifiers") Granum matchModifiers();
/** Among the potential components of the pattern are the following.
*
* - `{@linkplain AnchoredPrefix AnchoredPrefix}`
* - `{@linkplain BackslashedSpecial BackslashedSpecial}`
* - `{@linkplain GroupDelimiter GroupDelimiter}`
* - `{@linkplain Literalizer Literalizer}`
* - `{@linkplain Metacharacter Metacharacter}`
*/
public @TagName("Pattern") Granum pattern();
// ━━━ G r a n u m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
/** The default implementation returns ‘PatternMatcher’.
*/
public default @Override String tagName() { return "PatternMatcher"; }
// ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
/** An achored prefix within a regular-expression pattern, one of ‘^*’, ‘^+’ or ‘^^’.
*
*/ @TagName("AnchoredPrefix") @DataReflector
public static interface AnchoredPrefix extends Granum {
// ━━━ G r a n u m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
/** The default implementation returns ‘AnchoredPrefix’.
*/
public default @Override String tagName() { return "AnchoredPrefix"; }}
// ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
/** A ‘backslash sequence’, a sequence commencing with a backslash that has special meaning
* in a regular-expression pattern.
*
* @see The backslash
* @see Literalizer
*
*/ @TagName("BackslashedSpecial") @DataReflector
public static interface BackslashedSpecial extends Granum {
// ━━━ G r a n u m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
/** The default implementation returns ‘BackslashedSpecial’.
*/
public default @Override String tagName() { return "BackslashedSpecial"; }}
// ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
/** A group delimiter within a regular-expression pattern, one of ‘(’, ‘(?:’ or ‘)’.
*
*/ @TagName("GroupDelimiter") @DataReflector
public static interface GroupDelimiter extends Granum {
// ━━━ G r a n u m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
/** The default implementation returns ‘GroupDelimiter’.
*/
public default @Override String tagName() { return "GroupDelimiter"; }}
// ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
/** A literalizing backslash within a regular-expression pattern, one that
* ‘takes away [any] special meaning of the character following it’.
*
* @see The backslash
* @see BackslashedSpecial
*
*/ @TagName("Literalizer") @DataReflector
public static interface Literalizer extends Granum {
// ━━━ G r a n u m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
/** The default implementation returns ‘Literalizer’.
*/
public default @Override String tagName() { return "Literalizer"; }}
// ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
/** A metacharacter within a regular-expression pattern.
*
* @see Metacharacters
*
*/ @TagName("Metacharacter") @DataReflector
public static interface Metacharacter extends Granum {
// ━━━ G r a n u m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
/** The default implementation returns ‘Metacharacter’.
*/
public default @Override String tagName() { return "Metacharacter"; }}
// ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
/** A variable interpolator `${⋯}` within a regular-expression pattern.
*
*/ @TagName("Variable") @DataReflector
public static interface Variable extends Granum {
// ━━━ G r a n u m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
/** The default implementation returns ‘Variable’.
*/
public default @Override String tagName() { return "Variable"; }}}
// Copyright © 2022 Michael Allan. Licence MIT.