Пример #1
0
        public static QLSNode Parse(string style)
        {
            AntlrInputStream  inputStream       = new AntlrInputStream(style);
            QLSGrammarLexer   QLSLexer          = new QLSGrammarLexer(inputStream);
            CommonTokenStream commonTokenStream = new CommonTokenStream(QLSLexer);
            QLSGrammarParser  QLSParser         = new QLSGrammarParser(commonTokenStream);

            StylesheetContext context = QLSParser.stylesheet();
            StylesheetVisitor visitor = new StylesheetVisitor();

            return(visitor.VisitStylesheet(context));
        }
Пример #2
0
        private List <PageViewModel> CreatePaginatedFormFromStylesheet(IReadOnlyList <QuestionViewModel> questions)
        {
            var            stylesheetTask      = new StylesheetTask(_mainViewModel.StylesheetInput, _symbols);
            StylesheetTask processedStylesheet = _stylesheetPipeline.Process(stylesheetTask);

            if (processedStylesheet.Errors.Any())
            {
                _mainViewModel.QuestionnaireValidation = processedStylesheet.Errors.Aggregate(
                    $"Validation failed! There are {processedStylesheet.Errors.Count} error(s) in your questionnaire stylesheet.",
                    (err, acc) => err + Environment.NewLine + acc);
                return(new List <PageViewModel>());
            }

            var stylesheetVisitor = new StylesheetVisitor(questions);

            processedStylesheet.Ast.Accept(stylesheetVisitor);

            return(stylesheetVisitor.PageViewModels);
        }