Expand description
Typed semantic intermediate representation (IR) for plsql-intelligence.
The IR is one step removed from the raw AST emitted by plsql-parser:
the AST is syntactic, the IR is semantic. Downstream product surfaces
(lineage, SAST, docs, bindgen, CI/CD) consume the IR rather than
re-walking ASTs, so name resolution, overload selection, and Oracle
catalog cross-checking happen in one place.
introduces the top-level container types:
SemanticModel, FileModel, and SchemaModel.
adds the Declaration enum and its variant payloads in the
decl module. Statement lowering arrives in.
Re-exports§
pub use calls::CallContext;pub use calls::CallSite;pub use calls::extract_call_sites;pub use calls::extract_call_sites_bounded;pub use canonical::CanonicalisationContext;pub use canonical::CanonicalisationStats;pub use canonical::canonicalize_expr;pub use canonical::canonicalize_statements;pub use column_edges::ColumnEdge;pub use column_edges::ColumnEdgeKind;pub use column_edges::extract_column_edges;pub use column_edges::extract_column_edges_for_model;pub use dml_edges::AccessKind;pub use dml_edges::TableAccess;pub use dml_edges::extract_table_accesses;pub use dml_edges::extract_table_accesses_bounded;pub use expr::Expr;pub use expr::NameRef;pub use expr::UnknownExprReason;pub use expr::lower_expression;pub use fact::Fact;pub use fact::FactId;pub use fact::FactKind;pub use fact::FactPayload;pub use fact::FactProvenance;pub use fact::FactStore;pub use fact::mint_fact;pub use fact_emit::emit_call_facts;pub use fact_emit::emit_declaration_facts;pub use fact_emit::emit_declarations_from;pub use fact_emit::emit_dynamic_sql_facts;pub use fact_emit::emit_flow_env_facts;pub use fact_emit::emit_flow_facts;pub use fact_emit::emit_privilege_facts;pub use fact_emit::emit_reference_facts;pub use fact_emit::emit_unknown_facts;pub use flow::ConstantValue;pub use flow::StringShape;pub use flow::Taint;pub use flow::TaintCleanser;pub use flow::TaintKind;pub use flow::ValueFlow;pub use flow::ValueSet;pub use flow_inter::CallEdgeFlow;pub use flow_inter::FlowUnknownFact;pub use flow_inter::InterFlowResult;pub use flow_inter::RoutineFlowSummary;pub use flow_inter::propagate_inter;pub use flow_intra::FlowEnv;pub use flow_intra::TaintSources;pub use flow_intra::analyze_flow;pub use flow_intra::analyze_flow_bounded;pub use flow_query::FlowQuery;pub use flow_query::TaintAnswer;pub use lower::LoweredFile;pub use lower::lower_top_level;pub use recursion_guard::MAX_RELOWER_DEPTH;pub use recursion_guard::RecursionOutcome;pub use sql_columns::extract_columns;pub use sql_columns::extract_columns_for_model;pub use sql_fact_emit::emit_sql_use_facts;pub use sql_fact_emit::emit_sql_use_facts_for_model;pub use sql_resolve::resolve_sql;pub use sql_sem::AliasBinding;pub use sql_sem::AliasScope;pub use sql_sem::ColumnResolution;pub use sql_sem::ColumnUse;pub use sql_sem::ProjectionItem;pub use sql_sem::SqlSemanticModel;pub use sql_sem::SqlSemanticVerb;pub use sql_sem::SqlStatementModel;pub use sql_sem::TableUsageKind;pub use sql_sem::TableUse;pub use stmt::IfArm;pub use stmt::SqlVerb;pub use stmt::Statement;pub use stmt::UnknownStatementReason;pub use stmt::lower_statement_body;pub use table_stub::DeclLike;pub use decl::AnchoredType;pub use decl::ColumnDecl;pub use decl::CursorDecl;pub use decl::DeclCommon;pub use decl::DeclKind;pub use decl::Declaration;pub use decl::FunctionDecl;pub use decl::IndexDecl;pub use decl::PackageDecl;pub use decl::ParamDecl;pub use decl::ParamMode;pub use decl::ProcedureDecl;pub use decl::SequenceDecl;pub use decl::SynonymDecl;pub use decl::TableDecl;pub use decl::TriggerDecl;pub use decl::TypeDecl;pub use decl::TypeRef;pub use decl::VariableDecl;pub use decl::ViewDecl;
Modules§
- calls
- Call-site edge extraction.
- canonical
- IR canonicalization.
- column_
edges - Column-level edge extraction.
- decl
- Declaration variants populated by AST→IR lowering.
- dml_
edges - Reads / Writes edge extraction at the table level.
- expr
- IR for PL/SQL expressions and name references.
- fact
- Normalized fact schema.
- fact_
emit - Emit declaration / reference / call facts plus privilege / dynamic-SQL / unknown facts.
- flow
- Value-flow, taint, constant, value-set, and string-shape models.
- flow_
inter - Single-hop inter-procedural parameter/return flow.
- flow_
intra - Intra-procedural assignment + expression flow.
- flow_
query - Taint-path + string-shape query API.
- lower
- AST → IR lowering for top-level declarations.
- recursion_
guard - Bounded-depth guard for the re-lowering walks.
- sql_
columns - Projection + column read/write extraction.
- sql_
fact_ emit - Emit SQL table/column-use facts with precision markers.
- sql_
resolve - Table / alias resolution for embedded SQL.
- sql_sem
- Semantic model for embedded SQL statements.
- stmt
- IR for PL/SQL statement bodies.
- table_
stub - Layering shim for fact emission (support).
Structs§
- DeclId
- Stable identity for a semantic declaration (procedure, function, package, type, variable, parameter, cursor, table, view, column, sequence, synonym, index, trigger). The concrete
Declarationenum lands inPLSQL-IR-002. - File
Model - Per-source-file IR view.
- Schema
Model - Per-schema IR view.
- Semantic
Model - Top-level container produced by Layer 2 semantic analysis.
- Statement
Id - Stable identity for an IR statement node. The statement enum lands in
PLSQL-IR-004; the embedded-SQL view inPLSQL-SQLSEM-001.