예제 #1
0
        protected override void BeforeTokenProcessed(BeforeTokenProcessedEventArgs args)
        {
            base.BeforeTokenProcessed(args);
            switch (args.CurrentToken.Token.Name)
            {
            case "<":
                CurrentLevel = 1;
                EnterTokenLimit("FirstLevel");
                break;

            case "<<":
                CurrentLevel = 2;
                EnterTokenLimit("SecondLevel");
                break;

            case "<<<":
                CurrentLevel = 3;
                EnterTokenLimit("ThirdLevel");
                break;

            case "!":
                ExitTokenLimit(CurrentLevel);
                CurrentLevel = 0;
                break;

            case ">":
            case ">>":
                ExitTokenLimit();
                CurrentLevel--;
                break;
            }
        }
        protected override void BeforeTokenProcessed(BeforeTokenProcessedEventArgs args)
        {
            base.BeforeTokenProcessed(args);

            switch (args.CurrentToken.Token.Name)
            {
            case "A":
                EnterTriviaLimit("JustABCs");
                break;

            case "C":
                ExitTriviaLimit();
                break;
            }
        }
예제 #3
0
        internal void InitializeABParser(ABParserConfiguration config)
        {
            // Set the tokens.
            Tokens = config.Tokens;

            // Then, initialize the base parser.
            InitializeBaseParser(config);

            BeforeTokenProcessedArgs = new BeforeTokenProcessedEventArgs(this);
            OnTokenProcessedArgs     = new OnTokenProcessedEventArgs(this);
            OnEndArgs = new OnEndEventArgs();
            OFUCPPos  = 0;

            OnTokenProcessedPreviousTokenInfo = new TokenInformation();
            OnTokenProcessedTokenInfo         = new TokenInformation();
            CurrentEventTokenInfo             = new TokenInformation();
        }
        protected override void BeforeTokenProcessed(BeforeTokenProcessedEventArgs args)
        {
            base.BeforeTokenProcessed(args);
            if (InString)
            {
                ExitTokenLimit();
            }
            else
            {
                switch (args.CurrentToken.Token.Name)
                {
                case "SINGLE_QUOTE":
                    EnterTokenLimit("SingleStringLimit");
                    break;

                case "DOUBLE_QUOTE":
                    EnterTokenLimit("DoubleStringLimit");
                    break;
                }
            }
        }
예제 #5
0
        protected override void BeforeTokenProcessed(BeforeTokenProcessedEventArgs args)
        {
            BeforeTokenProcessedPreviousTokens.Add(args.PreviousToken?.Token.Name);

            if (args.PreviousToken == null)
            {
                BeforeTokenProcessedTokenPreviousTokenStarts.Add(0);
                BeforeTokenProcessedTokenPreviousTokenEnds.Add(0);
            }
            else
            {
                BeforeTokenProcessedTokenPreviousTokenStarts.Add(args.PreviousToken.Start);
                BeforeTokenProcessedTokenPreviousTokenEnds.Add(args.PreviousToken.End);
            }

            BeforeTokenProcessedTokenTokenStarts.Add(args.CurrentToken.Start);
            BeforeTokenProcessedTokenTokenEnds.Add(args.CurrentToken.End);

            BeforeTokenProcessedLeadings.Add(args.GetLeadingAsString());
            BeforeTokenProcessedTokens.Add(args.CurrentToken.Token.Name);
        }
예제 #6
0
 protected override void BeforeTokenProcessed(BeforeTokenProcessedEventArgs args)
 {
     base.BeforeTokenProcessed(args);
 }
예제 #7
0
 /// <summary>
 /// Called before a token's trailing has been generated - mainly used to set limits.
 /// </summary>
 protected virtual void BeforeTokenProcessed(BeforeTokenProcessedEventArgs args)
 {
 }