public DeveroomGherkinDocument Parse(TextReader featureFileReader, string sourceFilePath)
        {
            var tokenScanner = (ITokenScanner) new HotfixTokenScanner(featureFileReader);
            var tokenMatcher = new TokenMatcher(DialectProvider);

            _astBuilder = new DeveroomGherkinAstBuilder(sourceFilePath, () => tokenMatcher.CurrentDialect);

            var parser          = new InternalParser(_astBuilder, AstBuilder.RecordStateForLine, _monitoringService);
            var gherkinDocument = parser.Parse(tokenScanner, tokenMatcher);

            CheckSemanticErrors(gherkinDocument);

            return(gherkinDocument);
        }
示例#2
0
        private void ParseWithErrorHandling(Action <Parser> doParsing, IAstBuilder <RuleSet> astBuilder = null)
        {
            var parser = astBuilder == null ? new Parser() : new Parser(astBuilder);

            parser.StopAtFirstError = stopAtFirstError;
            try
            {
                doParsing(parser);
            }
            catch (CompositeParserException parserEx)
            {
                parsingError = parserEx;
                Console.WriteLine(parsingError.GetErrorMessage());
            }
            catch (ParserException ex)
            {
                parsingError = new CompositeParserException(new[] { ex });
                Console.WriteLine(parsingError.GetErrorMessage());
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException("unhandled parsing error", ex);
            }
        }
示例#3
0
 protected virtual AssociativeNode BuildAstNode(IAstBuilder builder, List<AssociativeNode> inputAstNodes)
 {
     return builder.Build(this, inputAstNodes);
 }
 public InternalParser(IAstBuilder <DeveroomGherkinDocument> astBuilder, Action <int, int> recordStateForLine, IMonitoringService monitoringService)
     : base(astBuilder)
 {
     _recordStateForLine = recordStateForLine;
     _monitoringService  = monitoringService;
 }
 public Parser(IAstBuilder <GherkinDocument> astBuilder)
     : base(astBuilder)
 {
 }
示例#6
0
 public Parser(IAstBuilder <Feature> astBuilder)
     : base(astBuilder)
 {
 }
 public QuestionnaireAstCreator(IAstBuilder astBuilder)
 {
     m_astBuilder = astBuilder;
 }
示例#8
0
文件: Parser.cs 项目: Uncommon/berp
 public Parser(IAstBuilder <RuleSet> astBuilder) : base(astBuilder)
 {
 }
 public GherkinEditorParser(IAstBuilder <GherkinDocument> astBuilder) : base(astBuilder)
 {
     _astBuilder = astBuilder as GherkinTokenTagBuilder;
 }
 public CucumberExpressionsParser(IAstBuilder <T> astBuilder)
 {
     this.astBuilder = astBuilder;
 }
示例#11
0
 public Parser(IScanner scanner, IAstBuilder astBuilder)
 {
     _scanner    = scanner;
     _astBuilder = astBuilder;
 }
示例#12
0
 public QueryReader(IInterpreterRepository interpreterRepository, IAstBuilder astBuilder)
 {
     this.interpreterRepository = interpreterRepository;
     this.astBuilder            = astBuilder;
 }