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] + "]"); }
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 + "]"); } }
private static TCommand Parse <TCommand>(string s) where TCommand : CommandStatement { var cmd = StatementParser.Parse(s); Assert.IsInstanceOfType(cmd, typeof(TCommand)); return((TCommand)cmd); }
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")); }
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] + "]"); }
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] + "]"); }
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); } } }
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 + "]"); }
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] + "]"); }
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 + "]"); }
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); } }
//======================================================================================== // 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); }
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(); }
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] + "]"); }
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(); }