result static method

Identifier result(
  1. ListOfIdentifierable listOfIdentifierable
)

Implementation

static Identifier result(ListOfIdentifierable listOfIdentifierable) {

    final text = listOfIdentifierable.source;

    switch (text) {
    case NewLineEscapeSequenceKeyword.TEXT: return NewLineEscapeSequenceKeyword.constant();
    case SpaceEscapeSequenceKeyword.TEXT: return SpaceEscapeSequenceKeyword.constant();
    case EndCurlyBracketEscapeSequenceKeyword.TEXT: return EndCurlyBracketEscapeSequenceKeyword.constant();
    case StartCurlyBracketEscapeSequenceKeyword.TEXT: return StartCurlyBracketEscapeSequenceKeyword.constant();
    case EndParenthesisEscapeSequenceKeyword.TEXT: return EndParenthesisEscapeSequenceKeyword.constant();
    case StartParenthesisEscapeSequenceKeyword.TEXT: return StartParenthesisEscapeSequenceKeyword.constant();
    case EndAngleBracketEscapeSequenceKeyword.TEXT: return EndAngleBracketEscapeSequenceKeyword.constant();
    case StartAngleBracketEscapeSequenceKeyword.TEXT: return StartAngleBracketEscapeSequenceKeyword.constant();
    case EqualOperatorEscapeSequenceKeyword.TEXT: return EqualOperatorEscapeSequenceKeyword.constant();
    case PeriodEscapeSequenceKeyword.TEXT: return PeriodEscapeSequenceKeyword.constant();
    case SharpEscapeSequenceKeyword.TEXT: return SharpEscapeSequenceKeyword.constant();
    case UnderbarEscapeSequenceKeyword.TEXT: return UnderbarEscapeSequenceKeyword.constant();
    case AsteriskEscapeSequenceKeyword.TEXT: return AsteriskEscapeSequenceKeyword.constant();
    case DefineText.TEXT: return DefineText.constant();
    case DefineObject.TEXT: return DefineObject.constant();
    case True.TEXT: return True.constant();
    case False.TEXT: return False.constant();
    case For.TEXT: return For.constant();
    case Protect.TEXT: return Protect.constant();
    case In.TEXT: return In.constant();
    case Join.TEXT: return Join.constant();
    case Camel.TEXT: return Camel.constant();
    case Capital.TEXT: return Capital.constant();
    case Constant.TEXT: return Constant.constant();
    case Dot.TEXT: return Dot.constant();
    case Header.TEXT: return Header.constant();
    case No.TEXT: return No.constant();
    case Not.TEXT: return Not.constant();
    case Param.TEXT: return Param.constant();
    case Pascal.TEXT: return Pascal.constant();
    case Path.TEXT: return Path.constant();
    case Sentence.TEXT: return Sentence.constant();
    case Snake.TEXT: return Snake.constant();
    case Swap.TEXT: return Swap.constant();
    case _:

        // list of identiferable は 通常 not empty
        final startCharacter = text.split('').first;

        final result = Startable.VALUE_SET.contains(startCharacter);

        switch (result) {
        case true:

            return UserDefined(listOfIdentifierable);

        case false:

            // identifiable は - を使わないので マイナスのにはならない.
            // identifiable は . を使わないので 少数にはならない.
            // int.tryParse() で int の 10進数.
            // 以上より整数の絶対値 0 以上の整数になる.
            // radix が null の場合 10進数として parse のはず.
            final tryParseResult = int.tryParse(text);

            if (tryParseResult == null) return Anonymous(listOfIdentifierable);

            return IntegerModulus(listOfIdentifierable);

        }

    }

}