示例#1
0
        public Node ParseQLSSheet(string qlsSheetText)
        {
            QLSParser parser  = SetupParser(qlsSheetText);
            var       visitor = new ParseTreeVisitor();

            return(visitor.Visit(parser.stylesheet()));
        }
示例#2
0
        public StylesheetTask Process(StylesheetTask input)
        {
            QLSParser parser  = SetupParser(input.StylesheetText);
            var       visitor = new ParseTreeVisitor();

            input.Ast = visitor.Visit(parser.stylesheet());
            return(input);
        }
示例#3
0
        private QLSParser CreateParser(string input)
        {
            var inputStream = new AntlrInputStream(input);
            var lexer       = new QLSLexer(inputStream);
            var tokens      = new CommonTokenStream(lexer);
            var parser      = new QLSParser(tokens);

            AddErrorListener(parser);
            return(parser);
        }
示例#4
0
        public StyleSheet ParseQLSStream(TextReader reader)
        {
            if (reader == null) { throw new ArgumentNullException("reader"); }

            var inputStream = new AntlrInputStream(reader);

            var lexer = new QLSLexer(inputStream);

            var tokens = new CommonTokenStream(lexer);

            var parser = new QLSParser(tokens);

            var visitor = new StyleSheetBuilder();

            return visitor.Visit(parser.stylesheet());
        }
示例#5
0
        private void ParseFile(string inputFile)
        {
            var fileContent = File.ReadAllText(inputFile);

            try
            {
                var astForm  = QLParser.ParseString(fileContent);
                var messages = ValidateForm(astForm);
                if (AnyErrors(messages))
                {
                    _view.SetErrors(messages.Errors);
                    return;
                }
                _executor = new QLExecutor(astForm);

                var qlsFileLocation            = inputFile + ".qls";
                IQuestionFormRenderer renderer = new QLRenderer(_executor);
                if (File.Exists(qlsFileLocation))
                {
                    var styleSheet = QLSParser.ParseString(File.ReadAllText(qlsFileLocation));
                    messages.Add(ValidateStyleSheet(styleSheet, astForm));
                    if (AnyErrors(messages))
                    {
                        _view.SetErrors(messages.Errors);
                        return;
                    }
                    renderer = new QLSRenderer(_executor, styleSheet);
                }
                _view.SetFormControl(renderer.Render());
                _view.SetWarnings(messages.Warnings);
            }
            catch (QLParseException exception)
            {
                _view.SetErrors(exception.Exceptions);
            }
        }
示例#6
0
 private void AddErrorListener(QLSParser parser)
 {
     parser.RemoveErrorListeners();
     parser.AddErrorListener(new AntlrErrorListener(Messages));
 }