Example #1
0
        public override IMatched <Unit> Parse(ParseState state, Token[] tokens, ExpressionBuilder builder)
        {
            var className = tokens[2].Text;

            state.Colorize(tokens, Color.Whitespace, Color.Class);

            if (Module.Global.Class(className).If(out var cls))
            {
                builder.Add(new ClassSymbol(cls.Name));
                return(Unit.Matched());
            }
            else if (Module.Global.FullDataComparisandName(className).If(out _))
            {
                builder.Add(new FieldSymbol(className));
                return(Unit.Matched());
            }
            else if (Module.Global.Forwarded(className))
            {
                builder.Add(new ClassSymbol(className));
                return(Unit.Matched());
            }
            else if (state.ContainsPattern(className))
            {
                builder.Add(new FieldSymbol(className));
                return(Unit.Matched());
            }
            else
            {
                return(notMatched <Unit>());
            }
        }