public override IList <SqlRuleProblem> Analyze(SqlRuleExecutionContext ruleExecutionContext) { var problems = new List <SqlRuleProblem>(); var sqlObj = ruleExecutionContext.ModelElement; if (sqlObj == null || sqlObj.IsWhiteListed()) { return(problems); } var fragment = ruleExecutionContext.ScriptFragment.GetFragment(typeof(CreateProcedureStatement)); var execVisitor = new ExecuteVisitor(); fragment.Accept(execVisitor); if (execVisitor.Count == 0) { return(problems); } foreach (var exec in execVisitor.Statements) { if (exec.ExecuteSpecification.ExecutableEntity is ExecutableProcedureReference proc && proc.Parameters.Any(p => p.Variable == null)) { problems.Add(new SqlRuleProblem(Message, sqlObj, exec)); } } return(problems); }
static void Main(string[] args) { Parser parser = new Parser(new Lexer("")); ExecuteVisitor visitor = new ExecuteVisitor(); Parser.SqlScript sqlStatements = parser.Parse("SELECT TABLE garwmer ( name TEXT name, age INT name, coin REAL name ) ;"); Console.WriteLine(sqlStatements.Statements[0].TableName); sqlStatements.Statements[0].write_data(); sqlStatements.Statements[0].Accept(ref visitor); }
public override IList <SqlRuleProblem> Analyze(SqlRuleExecutionContext ruleExecutionContext) { var problems = new List <SqlRuleProblem>(); var sqlObj = ruleExecutionContext.ModelElement; if (sqlObj == null || sqlObj.IsWhiteListed()) { return(problems); } var objName = sqlObj.Name.GetName(); var fragment = ruleExecutionContext.ScriptFragment.GetFragment(ProgrammingAndViewSchemaTypes); var fromClauseVisitor = new FromClauseVisitor(); var execVisitor = new ExecuteVisitor(); fragment.Accept(fromClauseVisitor, execVisitor); var tableVisitor = new NamedTableReferenceVisitor() { TypeFilter = ObjectTypeFilter.PermanentOnly }; foreach (var from in fromClauseVisitor.Statements) { from.Accept(tableVisitor); } var offenders = tableVisitor.Statements.Where(tbl => { var id = tbl.GetObjectIdentifier(null); return(id.Parts.Count < 2 || string.IsNullOrWhiteSpace(id.Parts.First())); }); var execOffenders = execVisitor.Statements.Where(proc => CheckProc(proc)); problems.AddRange(offenders.Select(t => new SqlRuleProblem(Message, sqlObj, t))); problems.AddRange(execOffenders.Select(t => new SqlRuleProblem(Message, sqlObj, t))); return(problems); }
static void Main(string[] args) { PascalABCNewLanguageParser parser = new PascalABCNewLanguageParser(); string root = @"C:\PABCWork.NET\Samples"; //args[0]; var files = GetFiles(root); var visitor = new CountVisitor(); foreach (var x in files) { dynamic res = parser.BuildTree("ProgramFile", x, ParseMode.Normal); var executer = new ExecuteVisitor(visitor); if (res != null) { executer.visit(res); } } List <KeyValuePair <string, int> > myList = visitor.nodeCount.ToList(); myList.Sort((firstPair, nextPair) => { return(nextPair.Value.CompareTo(firstPair.Value)); } ); StreamWriter resFile = new StreamWriter("NodesCount.txt"); foreach (KeyValuePair <string, int> x in myList) { if (x.Value > 0) { resFile.WriteLine(x.Key + " - " + x.Value); } } resFile.Close(); //Console.ReadKey(); }
public void Execute(EJDB2Handle db, EJDB2Handle jql, long skip, long limit, JQLCallback cb, StringWriter explain) { if (db.IsInvalid) { throw new ArgumentException("Invalid DB handle."); } if (db.IsClosed) { throw new ArgumentException("DB handle is closed."); } if (jql.IsInvalid) { throw new ArgumentException("Invalid JQL handle."); } if (jql.IsClosed) { throw new ArgumentException("JQL handle is closed."); } IntPtr log = IntPtr.Zero; try { if (explain != null) { log = _helper.iwxstr_new(); if (log == IntPtr.Zero) { throw new InvalidOperationException("iwxstr_new failed."); } } var ux = new EJDB_EXEC { db = db.DangerousGetHandle(), q = jql.DangerousGetHandle(), skip = skip > 0 ? skip : 0, limit = limit > 0 ? limit : 0, opaque = IntPtr.Zero, visitor = null, log = log, }; if (cb != null) { var visitor = new ExecuteVisitor(_helper, cb); ux.visitor = visitor.Visitor; } ulong rc = _helper.ejdb_exec(ref ux); if (rc != 0) { throw _e.CreateException(rc); } if (log != IntPtr.Zero) { string slog = Utf8String.FromIntPtr(_helper.iwxstr_ptr(log)); explain.Write(slog); } } finally { if (log != IntPtr.Zero) { _helper.iwxstr_destroy(log); } } }