result static method

Identifier result(
  1. IdentifierableCollection listOfIdentifierable
)

Implementation

static Identifier result(IdentifierableCollection listOfIdentifierable) {

    final text = listOfIdentifierable.source;

    switch (text) {
    case True.TEXT: return True();
    case False.TEXT: return False();
    case DefineFlag.TEXT: return DefineFlag();
    case DefineObject.TEXT: return DefineObject();
    case DefineObjectArray.TEXT: return DefineObjectArray();
    case DefineText.TEXT: return DefineText();
    case DefineTextArray.TEXT: return DefineTextArray();
    case For.TEXT: return For();
    case Fragment.TEXT: return Fragment();
    case Protect.TEXT: return Protect();
    case Camel.TEXT: return Camel();
    case Capital.TEXT: return Capital();
    case Constant.TEXT: return Constant();
    case Dot.TEXT: return Dot();
    case Header.TEXT: return Header();
    case No.TEXT: return No();
    case Not.TEXT: return Not();
    case Param.TEXT: return Param();
    case Pascal.TEXT: return Pascal();
    case Path.TEXT: return Path();
    case Sentence.TEXT: return Sentence();
    case Snake.TEXT: return Snake();
    case Swap.TEXT: return Swap();
    case NewLineEscapeSequenceKeyword.TEXT: return NewLineEscapeSequenceKeyword();
    case SpaceEscapeSequenceKeyword.TEXT: return SpaceEscapeSequenceKeyword();
    case EndCurlyBracketEscapeSequenceKeyword.TEXT: return EndCurlyBracketEscapeSequenceKeyword();
    case StartCurlyBracketEscapeSequenceKeyword.TEXT: return StartCurlyBracketEscapeSequenceKeyword();
    case EndParenthesisEscapeSequenceKeyword.TEXT: return EndParenthesisEscapeSequenceKeyword();
    case StartParenthesisEscapeSequenceKeyword.TEXT: return StartParenthesisEscapeSequenceKeyword();
    case EndAngleBracketEscapeSequenceKeyword.TEXT: return EndAngleBracketEscapeSequenceKeyword();
    case StartAngleBracketEscapeSequenceKeyword.TEXT: return StartAngleBracketEscapeSequenceKeyword();
    case EqualOperatorEscapeSequenceKeyword.TEXT: return EqualOperatorEscapeSequenceKeyword();
    case PeriodEscapeSequenceKeyword.TEXT: return PeriodEscapeSequenceKeyword();
    case SharpEscapeSequenceKeyword.TEXT: return SharpEscapeSequenceKeyword();
    case UnderbarEscapeSequenceKeyword.TEXT: return UnderbarEscapeSequenceKeyword();
    case AsteriskEscapeSequenceKeyword.TEXT: return AsteriskEscapeSequenceKeyword();
    case In.TEXT: return In();
    case Join.TEXT: return Join();
    case With.TEXT: return With();
    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);

        }

    }

}