@@ -16,7 +16,7 @@ namespace GqlDt.Pipeline
1616-- Mark entire namespace as noncomputable due to axiomatized parser functions
1717noncomputable section
1818
19- open Lexer Parser TypeChecker TypeInference IR Serialization AST
19+ open Lexer Parser TypeChecker TypeInference IR Serialization Serialization.Types AST
2020
2121/-!
2222# GQL-DT/GQL Complete Parsing Pipeline
@@ -104,7 +104,7 @@ def tokenizeSource (source : String) : Except String (List Token) :=
104104 tokenize source
105105
106106/-- Stage 2: Parse tokens to AST -/
107- noncomputable def parseTokens (tokens : List Token) (config : PipelineConfig) : Except String (List Statement) := do
107+ noncomputable def parseTokens (tokens : List Token) (_config : PipelineConfig) : Except String (List Statement) := do
108108 let initialState : ParserState := {
109109 tokens := tokens,
110110 position := 0
@@ -124,21 +124,33 @@ def typeCheckAST (stmt : Statement) (config : PipelineConfig) : Except String St
124124 -- TODO: Verify proofs
125125 .ok stmt
126126
127+ /-- Convert parser-level ParsedSelect to IR.Select Unit -/
128+ def parsedSelectToIR (ps : ParsedSelect) (permissions : PermissionMetadata) : IR :=
129+ .select {
130+ selectList := ps.selectList,
131+ from_ := ps.from_,
132+ where_ := ps.where_,
133+ orderBy := ps.orderBy,
134+ limit := ps.limit,
135+ returning := none,
136+ permissions := permissions
137+ }
138+
127139/-- Stage 4: Generate IR from AST -/
128- def generateIRFromAST (stmt : Statement) (config : PipelineConfig) : Except String IR := do
140+ def generateIRFromAST (stmt : Statement) (config : PipelineConfig) : Except String IR :=
129141 match stmt with
130- | .insertGQL inferred =>
142+ | .insertGQL _inferred =>
131143 -- TODO: Convert InferredInsert to IR.Insert (needs schema lookup)
132144 .error "InferredInsert → IR conversion not yet implemented"
133- | .insertGQLdt inferred =>
145+ | .insertGQLdt _inferred =>
134146 -- TODO: Convert InferredInsert to IR.Insert (needs schema lookup)
135147 .error "InferredInsert → IR conversion not yet implemented"
136148 | .select selectStmt =>
137- .ok (generateIR_Select selectStmt config.permissions)
138- | .update updateStmt =>
149+ .ok (parsedSelectToIR selectStmt config.permissions)
150+ | .update _updateStmt =>
139151 -- TODO: Generate IR.Update (needs schema lookup)
140152 .error "UPDATE → IR conversion not yet implemented"
141- | .delete deleteStmt =>
153+ | .delete _deleteStmt =>
142154 -- TODO: Generate IR.Delete (needs schema lookup)
143155 .error "DELETE → IR conversion not yet implemented"
144156
@@ -155,34 +167,37 @@ noncomputable def serializeIRToBytes (ir : IR) (config : PipelineConfig) : ByteA
155167-- ============================================================================
156168
157169/-- Run complete pipeline: Source → IR -/
158- noncomputable def runPipeline (source : String) (config : PipelineConfig) : Except String IR := do
170+ noncomputable def runPipeline (source : String) (config : PipelineConfig) : Except String IR :=
159171 -- Stage 1: Tokenize
160- let tokens ← tokenizeSource source
161-
172+ match tokenizeSource source with
173+ | .error msg => .error msg
174+ | .ok tokens =>
162175 -- Stage 2: Parse
163- let stmts ← parseTokens tokens config
164-
176+ match parseTokens tokens config with
177+ | .error msg => .error msg
178+ | .ok stmts =>
165179 -- Get first statement (TODO: Handle multiple statements)
166- let stmt ← match stmts.head? with
167- | some s => .ok s
168- | none => .error "No statements parsed"
169-
180+ match stmts.head? with
181+ | none => .error "No statements parsed"
182+ | some stmt =>
170183 -- Stage 3: Type check
171- let checkedStmt ← typeCheckAST stmt config
172-
184+ match typeCheckAST stmt config with
185+ | .error msg => .error msg
186+ | .ok checkedStmt =>
173187 -- Stage 4: Generate IR
174- let ir ← generateIRFromAST checkedStmt config
175-
188+ match generateIRFromAST checkedStmt config with
189+ | .error msg => .error msg
190+ | .ok ir =>
176191 -- Stage 5: Validate permissions
177- validateIRPermissions ir config
178-
179- -- Return validated IR
180- .ok ir
192+ match validateIRPermissions ir config with
193+ | .error msg => .error msg
194+ | .ok () => .ok ir
181195
182196/-- Run pipeline and serialize to bytes -/
183- noncomputable def runPipelineAndSerialize (source : String) (config : PipelineConfig) : Except String ByteArray := do
184- let ir ← runPipeline source config
185- .ok (serializeIRToBytes ir config)
197+ noncomputable def runPipelineAndSerialize (source : String) (config : PipelineConfig) : Except String ByteArray :=
198+ match runPipeline source config with
199+ | .error msg => .error msg
200+ | .ok ir => .ok (serializeIRToBytes ir config)
186201
187202-- ============================================================================
188203-- Convenience Functions
0 commit comments