예제 #1
0
파일: ShellVisitor.cs 프로젝트: vi-v/TraSH
 public override ParserResult VisitArgs([NotNull] ArgsContext context)
 {
     return(this.BuildList <ArgsContext, ArgContext, string>(
                context.args,
                context.arg,
                this.VisitArgs,
                this.VisitArg,
                "ArgValue",
                "ArgListValue",
                "IsArgList"));
 }
예제 #2
0
        public void ArgListMixedArgsTest()
        {
            ShellParser  shellParser = MakeParser("these are 'some args'");
            ArgsContext  context     = shellParser.args();
            ShellVisitor visitor     = new ShellVisitor();

            ParserResult result = visitor.Visit(context);

            result.IsArgList.Should().BeTrue();
            result.ArgListValue.Should().BeEquivalentTo(new List <string> {
                "these", "are", "some args"
            }, opts => opts.WithStrictOrdering());
        }
예제 #3
0
        public void ArgListOneWordTest()
        {
            ShellParser  shellParser = MakeParser("wordarg");
            ArgsContext  context     = shellParser.args();
            ShellVisitor visitor     = new ShellVisitor();

            ParserResult result = visitor.Visit(context);

            result.IsArgList.Should().BeTrue();
            result.ArgListValue.Should().BeEquivalentTo(new List <string> {
                "wordarg"
            }, opts => opts.WithStrictOrdering());
        }
예제 #4
0
        public ArgsContext args()
        {
            ArgsContext _localctx = new ArgsContext(_ctx, State);

            EnterRule(_localctx, 6, RULE_args);
            int _la;

            try {
                EnterOuterAlt(_localctx, 1);
                {
                    State = 42; arg();
                    State = 47;
                    _errHandler.Sync(this);
                    _la = _input.La(1);
                    while (_la == DELIM)
                    {
                        {
                            {
                                State = 43; Match(DELIM);
                                State = 44; arg();
                            }
                        }
                        State = 49;
                        _errHandler.Sync(this);
                        _la = _input.La(1);
                    }
                }
            }
            catch (RecognitionException re) {
                _localctx.exception = re;
                _errHandler.ReportError(this, re);
                _errHandler.Recover(this, re);
            }
            finally {
                ExitRule();
            }
            return(_localctx);
        }
예제 #5
0
    public ArgsContext args()
    {
        ArgsContext _localctx = new ArgsContext(Context, State);

        EnterRule(_localctx, 4, RULE_args);
        try {
            State = 25;
            ErrorHandler.Sync(this);
            switch (TokenStream.LA(1))
            {
            case INT:
                EnterOuterAlt(_localctx, 1);
                {
                    State = 19; Match(INT);
                }
                break;

            case FLOATING:
                EnterOuterAlt(_localctx, 2);
                {
                    State = 20; Match(FLOATING);
                }
                break;

            case NAME:
                EnterOuterAlt(_localctx, 3);
                {
                    State = 21; Match(NAME);
                }
                break;

            case STRING:
                EnterOuterAlt(_localctx, 4);
                {
                    State = 22; Match(STRING);
                }
                break;

            case FALSY:
                EnterOuterAlt(_localctx, 5);
                {
                    State = 23; Match(FALSY);
                }
                break;

            case LPAR:
                EnterOuterAlt(_localctx, 6);
                {
                    State = 24; expr();
                }
                break;

            default:
                throw new NoViableAltException(this);
            }
        }
        catch (RecognitionException re) {
            _localctx.exception = re;
            ErrorHandler.ReportError(this, re);
            ErrorHandler.Recover(this, re);
        }
        finally {
            ExitRule();
        }
        return(_localctx);
    }