Exemplo n.º 1
0
        public void ParseSimple()
        {
            Console.WriteLine("-- ParseSimple ------------------------------------------------");

            StatementParser     parser     = new StatementParser();
            StatementCollection statements = parser.Parse("SELECT * FROM dual");

            Assert.AreEqual(1, statements.Count);
            Console.WriteLine("S1=[" + statements[0] + "]");

            statements = parser.Parse("SELECT * FROM dual;");
            Assert.AreEqual(1, statements.Count);
            Console.WriteLine("S2=[" + statements[0] + "]");

            statements = parser.Parse("\nSELECT * FROM dual;\n/\n");
            Assert.AreEqual(1, statements.Count);
            Console.WriteLine("S3=[" + statements[0] + "]");

            statements = parser.Parse("\nSELECT * FROM dual;\nEXIT;\n");
            Assert.AreEqual(1, statements.Count);
            Console.WriteLine("S4=[" + statements[0] + "]");

            statements = parser.Parse("\nSELECT * FROM dual;\n/ SELECT  * FROM other ; \n");
            Assert.AreEqual(2, statements.Count);
            Console.WriteLine("S5=[" + statements[0] + "]");
            Console.WriteLine("S5=[" + statements[1] + "]");
        }
Exemplo n.º 2
0
        public void ParseSemiComplex()
        {
            Console.WriteLine("-- ParseSemiComplex -------------------------------------------");

            string sql =
                @"CREATE TABLE SEC_DirectoryNode
(
	nodeID       char(32)      NOT NULL,
	modVersion   int           DEFAULT 1 NOT NULL
);

ALTER TABLE SEC_DirectoryNode ADD
(
	CONSTRAINT PK_SEC_DirectoryNode PRIMARY KEY (nodeID)
);

CREATE INDEX IX_SEC_DirectoryNode_typeID
    ON SEC_DirectoryNode (typeID);";

            StatementParser     parser     = new StatementParser();
            StatementCollection statements = parser.Parse(sql);

            Assert.AreEqual(3, statements.Count);

            foreach (string s in statements)
            {
                Console.WriteLine("S=[" + s + "]");
            }
        }
Exemplo n.º 3
0
        private static TCommand Parse <TCommand>(string s) where TCommand : CommandStatement
        {
            var cmd = StatementParser.Parse(s);

            Assert.IsInstanceOfType(cmd, typeof(TCommand));
            return((TCommand)cmd);
        }
Exemplo n.º 4
0
        public void ImportSingleStatement()
        {
            string line = "18/03	 D		INT PAG TIT BANCO 237        		9.952,27	-	";

            List <TransactionLine> statements = parser.Parse(line);

            Assert.Single(statements);
            ValidateStatement(statements.First(), -9_952.27m, "INT PAG TIT BANCO 237", DateTime.Parse("2019-03-18"));
        }
Exemplo n.º 5
0
        public void ParseXmlType()
        {
            Console.WriteLine("-- ParseXmlType -----------------------------------------------");

            string sql = @"TEST';' TEST; TEST;";

            StatementParser parser = new StatementParser();

            parser.IsOptimized = true;
            StatementCollection statements = parser.Parse(sql);

            Assert.AreEqual(2, statements.Count);

            sql =
                @"INSERT INTO COR_Field
    (fieldID, fieldVersion, name, displayName, shortName, description, remarks, prefixResID,
    fieldType, fieldSource, sourceName, definition, valuePaths, processingStage, formulaID,
    isStandard, isCataloged, isSearchable, isRetrievable, isLocked, isObsolete)
VALUES
(
    'A91A2D673F9846689E2D4AA9B38D81C5',
    0,
    'BracketGroup',
    NULL,
    NULL,
    NULL,
    NULL,
    'BracketGroup,Waters.Lib.Resources,UDFResources',
    'String',
    'Class',
    NULL,
    xmltype('<definition>
  <columnNo>7</columnNo>
  <concatSeparator>;</concatSeparator>
</definition>'),
    xmltype('<valuePaths>
  <namespace prefix=""udf"">urn:www.waters.com/udf</namespace>
  <path purpose=""catalog"">/item/catalog/bracketGroup</path>
  <path purpose=""default"">quantitationProperties::bracketGroup</path>
  <path purpose=""udf"">quantitationProperties::bracketGroup</path>
  <path purpose=""xpath"">/udf:result/udf:sample/udf:propertyGroups/udf:quantitationProperties/udf:bracketGroup</path>
</valuePaths>'),
    NULL,
    '00000000000000000000000000000000',
    1,
    1,
    1,
    1,
    0,
    0
);";

            parser             = new StatementParser();
            parser.IsOptimized = true;
            statements         = parser.Parse(sql);
            Assert.AreEqual(1, statements.Count);

            Console.WriteLine("S=[" + statements[0] + "]");
        }
Exemplo n.º 6
0
        public void ParseComplexOptimized()
        {
            Console.WriteLine("-- ParseComplexOptimized --------------------------------------");

            string sql =
                @"-- ***********************************************************************************************
-- Copyright © 2005 Waters Corporation. All Rights Reserved.
--
-- Everest Security Subsystem Licensing package implementation.
--
-- ***********************************************************************************************

CREATE OR REPLACE PACKAGE BODY SEC_Licensing
AS
	-- Forward declaration

	PROCEDURE SaveLicense (
	    p_licenseID  IN OUT char,
	    p_name       IN  varchar2,
	    p_license    IN  xmltype,
	    p_modifierID IN  char,
	    p_modVersion IN  int,
		p_newID		 OUT char
	    );


	-- ===========================================================================================
	-- DeleteLicense()
	-- ===========================================================================================

	PROCEDURE DeleteLicense (
	    p_licenseID IN char
	    )
	IS
	BEGIN
	  IF (p_licenseID > SystemLicenseID) THEN
	    BEGIN
	      DELETE SEC_License
	       WHERE licenseID = p_licenseID;
	    END;
	  END IF;
	END DeleteLicense;

END SEC_Licensing;
/";

            StatementParser parser = new StatementParser();

            parser.IsOptimized = true;
            StatementCollection statements = parser.Parse(sql);

            Assert.AreEqual(1, statements.Count);

            Console.WriteLine("S=[" + statements[0] + "]");
        }
Exemplo n.º 7
0
 internal static IEnumerable <Statement> Parse(this StatementParser parser, string input)
 {
     using (Scanner scanner = new Scanner(input))
     {
         scanner.MoveNext();
         foreach (var statement in parser.Parse(scanner))
         {
             yield return(statement);
         }
     }
 }
Exemplo n.º 8
0
        public void ParseCombine()
        {
            Console.WriteLine("-- ParseCombine -----------------------------------------------");

            StatementParser     parser     = new StatementParser();
            StatementCollection statements = parser.Parse(
                "SELECT 'a' FROM dual;\nSELECT 'b' FROM dual;\nSELECT 'c' FROM dual;");

            Assert.AreEqual(3, statements.Count);

            string combined = statements.Combine();

            Console.WriteLine("combined=[" + combined + "]");
        }
Exemplo n.º 9
0
        public void ParseNotifications()
        {
            Console.WriteLine("-- ParseNotifications -----------------------------------------");

            StatementParser parser = new StatementParser();

            parser.ParseNotification += new NotificationEventHandler(parser_ParseNotification);
            StatementCollection statements = parser.Parse(
                "SELECT 'a' FROM dual;\nSELECT 'b' FROM dual; -- foo\nSELECT 'c' FROM dual;");

            Assert.AreEqual(3, statements.Count);

            Console.WriteLine("S0=[" + statements[0] + "]");
            Console.WriteLine("S1=[" + statements[1] + "]");
            Console.WriteLine("S2=[" + statements[2] + "]");
        }
Exemplo n.º 10
0
        public void ParseWrap()
        {
            Console.WriteLine("-- ParseWrap --------------------------------------------------");

            StatementParser     parser     = new StatementParser();
            StatementCollection statements = parser.Parse(
                "SELECT 'a' FROM dual;\nSELECT 'b' FROM dual;\nSELECT 'c' FROM dual;");

            Assert.AreEqual(3, statements.Count);

            string wrapped = statements.Wrap("DefaultSchema");

            Assert.AreEqual(3, statements.Parameters.Count);

            Console.WriteLine("wrapped=[" + wrapped + "]");
        }
Exemplo n.º 11
0
        private IEnumerable <Statement> ConvertToStatements(IEnumerable <ILine> lines)
        {
            var linesGroupedPerStatement = GroupTransactionsPerStatement(lines);

            var statements = new List <Statement>();
            var parser     = new StatementParser();

            foreach (var linesForStatement in linesGroupedPerStatement)
            {
                var statement = parser.Parse(linesForStatement);

                statements.Add(statement);
            }

            return(statements);
        }
        // Parse a Pascal source program and generate the symbol table and the intermediate code.
        public override void parse()
        {
            long startTime = DateTime.Now.Ticks;

            iCode = ICodeFactory.CreateICode();

            try
            {
                Token     token    = NextToken();
                ICodeNode rootNode = null;

                // Look for the BEGIN token to parse a compound statement.
                if (token.type == PascalTokenType.BEGIN)
                {
                    StatementParser statementParser = new StatementParser(this);
                    rootNode = statementParser.Parse(token);
                    token    = CurrentToken();
                }
                else
                {
                    errorHandler.flag(token, PascalErrorCode.UNEXPECTED_TOKEN, this);
                }

                // Look for the final period.
                if (token.type != PascalTokenType.DOT)
                {
                    errorHandler.flag(token, PascalErrorCode.MISSING_PERIOD, this);
                }

                token = CurrentToken();

                // Set parse tree root node.
                if (rootNode != null)
                {
                    iCode.SetRoot(rootNode);
                }

                // Send parser summary message.
                float elapsedTime = (DateTime.Now.Ticks - startTime) / 10000000f;
                sendMessage(new Message(MessageType.PARSER_SUMMARY,
                                        new IConvertible[] { token.lineNumber, getErrorCount(), elapsedTime }));
            }
            catch (System.IO.IOException e)
            {
                errorHandler.abortTranslation(PascalErrorCode.IO_ERROR, this);
            }
        }
Exemplo n.º 13
0
        //========================================================================================
        // GetStatementCollection()
        //========================================================================================

        /// <summary>
        /// Builds a statement collection from the selected text and formats it according
        /// to user options.  If there are more one statement, the user may be prompted
        /// to select a specific parse mode.
        /// </summary>
        /// <param name="parseMode">The default or explicit parse mode.</param>
        /// <param name="text">The text to parse into statements.</param>
        /// <returns>A StatementCollection of one or more formatted statements.</returns>

        private StatementCollection GetStatementCollection(ParseMode parseMode, string text)
        {
            var parser = new StatementParser();
            StatementCollection statements = parser.Parse(text);

            if ((parseMode == ParseMode.None) && (statements.Count > 1))
            {
                parseMode = (ParseMode)UserOptions.GetEnumeration(
                    "connections/parseMode", typeof(ParseMode));

                if (parseMode == ParseMode.Prompt)
                {
                    var          dialog = new Dialogs.AlgorithmDialog(statements.Count, false);
                    DialogResult result = dialog.ShowDialog(this);

                    if (result == DialogResult.Cancel)
                    {
                        return(null);
                    }

                    parseMode = dialog.Mode;

                    if (dialog.StoreSelection)
                    {
                        UserOptions.SetValue("connections/parseMode", dialog.Mode.ToString());
                        UserOptions.Save();
                    }
                }
            }


            if (parseMode == ParseMode.Wrapped)
            {
                statements.Wrap(dbase.DefaultSchema);
            }
            else if (parseMode == ParseMode.Block)
            {
                statements.Combine();
            }

            return(statements);
        }
Exemplo n.º 14
0
        static void Main(string[] args)
        {
            var variableValues = new Dictionary<string, string>
                {
                    { "VariableA", "Case5" },
                    { "VariableB", "CaseX" }
                };

            var inputTxt = string.Empty;
            using (StreamReader reader = new StreamReader("Input.txt"))
            {
                 inputTxt = reader.ReadToEnd();
            }
            ILanguageTranslator translator = new LanguageTranslator(
                new TextReader(inputTxt));

            var parser = new StatementParser(translator, variableValues);

            parser.Parse();
        }
Exemplo n.º 15
0
        public void ParseComplex1()
        {
            Console.WriteLine("-- ParseComplex1 ----------------------------------------------");

            string sql =
                @"-- ***********************************************************************************************
-- Copyright © 2005 Waters Corporation. All Rights Reserved.
--
-- Everest Security Subsystem Licensing package declaration.
--
-- ***********************************************************************************************

CREATE OR REPLACE PACKAGE SEC_Licensing
AS
	SUBTYPE guid IS char(32);

	SystemLicenseID guid := '0000000000000000000000000000000F';


	-- ===========================================================================================
	-- DeleteLicense()
	--     Delete a license record.  The system license (licenseID = 1) cannot be deleted.
	-- ===========================================================================================
	
	PROCEDURE DeleteLicense (
	    p_licenseID IN char
	    );

END SEC_Licensing;
/";

            StatementParser     parser     = new StatementParser();
            StatementCollection statements = parser.Parse(sql);

            Assert.AreEqual(1, statements.Count);

            Console.WriteLine("S=[" + statements[0] + "]");
        }
Exemplo n.º 16
0
        static void Main(string[] args)
        {
            string lines = GetData();

            StatementParser parser = new StatementParser();
            List <ClassifiedTransactionLine> statements = parser.Parse(lines)
                                                          .Select(x => (ExecutedTransactionLine)x)
                                                          .ToList <ClassifiedTransactionLine>();

            Classificar(statements, "NET SERVIÇOS", new ClassificationInfo("Moradia", ClassificationInfo.ResponsibleAll, Importance.Essential));
            Classificar(statements, "ELETROPAULO", new ClassificationInfo("Moradia", ClassificationInfo.ResponsibleAll, Importance.Essential));
            Classificar(statements, "IPVA", new ClassificationInfo("Transporte", ClassificationInfo.ResponsibleAll, Importance.HardToCut));

            List <MonthlyView> months = new MonthlyViewBuilder(
                statements.ToList <TransactionLine>(),
                new List <IViewerPipeline>()
            {
                new RecurringTransactionsPipeline(BuildRecurrences(), new YearMonth(2019, 6))
            })
                                        .Build(-3_175.16m);

            foreach (var item in months)
            {
                Console.WriteLine(item.YearMonth.ToString());
                Console.WriteLine("Saldo inicial: " + String.Format("{0:C}", item.InitialAmount));
                foreach (var line in item.Lines)
                {
                    Console.WriteLine("\t" + string.Format("{0:dd/MM}", line.TransactionDate) +
                                      "\t" + line.Description +
                                      "\t" + string.Format("{0:C}", line.Amount) +
                                      "\t" + ((ClassifiedTransactionLine)line).Category);
                }
                Console.WriteLine("Saldo final: " + String.Format("{0:C}", item.FinalAmount));
            }
            Console.ReadLine();
        }