public void Parse(Response response, dynamic args)
        {
            string source = getString(args, "source");
            NoCaseAntlrStringStream input       = new NoCaseAntlrStringStream(source);
            AdvplLexer        lexer             = new AdvplLexer(input);
            CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
            AdvplParser       advplParser       = new AdvplParser(commonTokenStream);

            advplParser.RemoveErrorListeners();
            AdvplErrorListener errorListener = new AdvplErrorListener();

            advplParser.AddErrorListener(errorListener);
            ParserRuleContext tree = advplParser.program();

            //Cria a tabela de symbolo
            SymbolTableDefPhase tableSymbolList = new SymbolTableDefPhase();
            ParseTreeWalker     walkerGeneral   = new ParseTreeWalker();

            walkerGeneral.Walk(tableSymbolList, tree);


            AdvplCompileInfo info = new AdvplCompileInfo();

            info.Errors = errorListener.Errors;
            //string json = JsonConvert.SerializeObject(info);
            SendResponse(response, info);
            //System.Console.WriteLine(json);
        }
Example #2
0
    private void RunParser(string source)
    {
        NoCaseANTLRFileStream inputStream       = new NoCaseANTLRFileStream(source);
        AdvplLexer            lexer             = new AdvplLexer(inputStream);
        CommonTokenStream     commonTokenStream = new CommonTokenStream(lexer);
        AdvplParser           advplParser       = new AdvplParser(commonTokenStream);

        advplParser.RemoveErrorListeners();
        AdvplErrorListener errorListener = new AdvplErrorListener();

        advplParser.AddErrorListener(errorListener);
        ParserRuleContext tree = advplParser.program();
        AdvplCompileInfo  info = new AdvplCompileInfo();

        info.Errors = errorListener.Errors;
        string json = JsonConvert.SerializeObject(info);

        System.Console.WriteLine(json);

        /*if (advplParser.NumberOfSyntaxErrors == 0)
         * {
         *  System.Console.WriteLine("OK");
         * }
         * else
         * {
         *
         *  System.Console.WriteLine("AdvplParser Error.");
         *
         *  foreach (AdvplErroInfo info in errorListener.Errors)
         *  {
         *      System.Console.WriteLine(info.ToString());
         *  }
         *  //string json = JsonConvert.SerializeObject(obj);
         * }*/
    }
        /// <summary>
        /// Parses the current file contents to get the AST, tokens,
        /// and parse errors.
        /// </summary>
        private void ParseFileContents()
        {
            //  ParseError[] parseErrors = null;

            // First, get the updated file range
            int lineCount = this.FileLines.Count;

            if (lineCount > 0)
            {
                NoCaseAntlrStringStream input       = new NoCaseAntlrStringStream(this.Contents);
                AdvplLexer        lexer             = new AdvplLexer(input);
                CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
                AdvplParser       advplParser       = new AdvplParser(commonTokenStream);
                advplParser.RemoveErrorListeners();
                AdvplErrorListener errorListener = new AdvplErrorListener();
                advplParser.AddErrorListener(errorListener);
                ParserRuleContext tree = advplParser.program();

                //Cria a tabela de symbolo
                SymbolTableDefPhase tableSymbolList = new SymbolTableDefPhase();
                ParseTreeWalker     walkerGeneral   = new ParseTreeWalker();
                walkerGeneral.Walk(tableSymbolList, tree);

                // Translate parse errors into syntax markers
                this.SyntaxMarkers =
                    errorListener.getErros().Select(ScriptFileMarker.FromAdvplError)
                    .ToArray();
            }

            /*
             * this.FileRange =
             *  new BufferRange(
             *      new BufferPosition(1, 1),
             *      new BufferPosition(
             *          lineCount + 1,
             *          this.FileLines[lineCount - 1].Length + 1));
             * }
             * else
             * {
             * this.FileRange = BufferRange.None;
             * }
             *
             * try
             * {
             * this.ScriptAst =
             *  Parser.ParseInput(
             *      this.Contents,
             *      out this.scriptTokens,
             *      out parseErrors);
             *
             * }
             * catch (RuntimeException ex)
             * {
             * var parseError =
             *  new ParseError(
             *      null,
             *      ex.ErrorRecord.FullyQualifiedErrorId,
             *      ex.Message);
             *
             * parseErrors = new[] { parseError };
             * this.scriptTokens = new Token[0];
             * this.ScriptAst = null;
             * }
             */

            /*
             * //Get all dot sourced referenced files and store  them
             * this.ReferencedFiles =
             *  AstOperations.FindDotSourcedIncludes(this.ScriptAst);
             * }*/
        }