@@ -32,7 +32,7 @@ class EGraph:
3232 record : bool = False ,
3333 ) -> None : ...
3434 def commands (self ) -> str | None : ...
35- def parse_program (self , __input : str , / ) -> list [_Command ]: ...
35+ def parse_program (self , __input : str , / , filename : str | None = None ) -> list [_Command ]: ...
3636 def run_program (self , * commands : _Command ) -> list [str ]: ...
3737 def extract_report (self ) -> _ExtractReport | None : ...
3838 def run_report (self ) -> RunReport | None : ...
@@ -56,6 +56,25 @@ class EGraph:
5656class EggSmolError (Exception ):
5757 context : str
5858
59+ ##
60+ # Spans
61+ ##
62+
63+ @final
64+ class SrcFile :
65+ def __init__ (self , name : str , contents : str | None = None ) -> None : ...
66+ name : str
67+ contents : str | None
68+
69+ @final
70+ class Span :
71+ def __init__ (self , file : SrcFile , start : int , end : int ) -> None : ...
72+ file : SrcFile
73+ start : int
74+ end : int
75+
76+ DUMMY_SPAN : Span = ...
77+
5978##
6079# Literals
6180##
@@ -92,17 +111,20 @@ _Literal: TypeAlias = Int | F64 | String | Bool | Unit
92111
93112@final
94113class Lit :
95- def __init__ (self , value : _Literal ) -> None : ...
114+ def __init__ (self , span : Span , value : _Literal ) -> None : ...
115+ span : Span
96116 value : _Literal
97117
98118@final
99119class Var :
100- def __init__ (self , name : str ) -> None : ...
120+ def __init__ (self , span : Span , name : str ) -> None : ...
121+ span : Span
101122 name : str
102123
103124@final
104125class Call :
105- def __init__ (self , name : str , args : list [_Expr ]) -> None : ...
126+ def __init__ (self , span : Span , name : str , args : list [_Expr ]) -> None : ...
127+ span : Span
106128 name : str
107129 args : list [_Expr ]
108130
@@ -142,7 +164,8 @@ class TermDag:
142164
143165@final
144166class Eq :
145- def __init__ (self , exprs : list [_Expr ]) -> None : ...
167+ def __init__ (self , span : Span , exprs : list [_Expr ]) -> None : ...
168+ span : Span
146169 exprs : list [_Expr ]
147170
148171@final
@@ -172,43 +195,50 @@ _Change: TypeAlias = Delete | Subsume
172195
173196@final
174197class Let :
175- def __init__ (self , lhs : str , rhs : _Expr ) -> None : ...
198+ def __init__ (self , span : Span , lhs : str , rhs : _Expr ) -> None : ...
199+ span : Span
176200 lhs : str
177201 rhs : _Expr
178202
179203@final
180204class Set :
181- def __init__ (self , lhs : str , args : list [_Expr ], rhs : _Expr ) -> None : ...
205+ def __init__ (self , span : Span , lhs : str , args : list [_Expr ], rhs : _Expr ) -> None : ...
206+ span : Span
182207 lhs : str
183208 args : list [_Expr ]
184209 rhs : _Expr
185210
186211@final
187212class Change :
213+ span : Span
188214 change : _Change
189215 sym : str
190216 args : list [_Expr ]
191- def __init__ (self , change : _Change , sym : str , args : list [_Expr ]) -> None : ...
217+ def __init__ (self , span : Span , change : _Change , sym : str , args : list [_Expr ]) -> None : ...
192218
193219@final
194220class Union :
195- def __init__ (self , lhs : _Expr , rhs : _Expr ) -> None : ...
221+ def __init__ (self , span : Span , lhs : _Expr , rhs : _Expr ) -> None : ...
222+ span : Span
196223 lhs : _Expr
197224 rhs : _Expr
198225
199226@final
200227class Panic :
201- def __init__ (self , msg : str ) -> None : ...
228+ def __init__ (self , span : Span , msg : str ) -> None : ...
229+ span : Span
202230 msg : str
203231
204232@final
205233class Expr_ : # noqa: N801
206- def __init__ (self , expr : _Expr ) -> None : ...
234+ def __init__ (self , span : Span , expr : _Expr ) -> None : ...
235+ span : Span
207236 expr : _Expr
208237
209238@final
210239class Extract :
211- def __init__ (self , expr : _Expr , variants : _Expr ) -> None : ...
240+ def __init__ (self , span : Span , expr : _Expr , variants : _Expr ) -> None : ...
241+ span : Span
212242 expr : _Expr
213243 variants : _Expr
214244
@@ -256,17 +286,19 @@ class Schema:
256286
257287@final
258288class Rule :
289+ span : Span
259290 head : list [_Action ]
260291 body : list [_Fact ]
261- def __init__ (self , head : list [_Action ], body : list [_Fact ]) -> None : ...
292+ def __init__ (self , span : Span , head : list [_Action ], body : list [_Fact ]) -> None : ...
262293
263294@final
264295class Rewrite :
296+ span : Span
265297 lhs : _Expr
266298 rhs : _Expr
267299 conditions : list [_Fact ]
268300
269- def __init__ (self , lhs : _Expr , rhs : _Expr , conditions : list [_Fact ] = []) -> None : ... # noqa: B006
301+ def __init__ (self , span : Span , lhs : _Expr , rhs : _Expr , conditions : list [_Fact ] = []) -> None : ... # noqa: B006
270302
271303@final
272304class RunConfig :
@@ -322,24 +354,28 @@ _ExtractReport: TypeAlias = Variants | Best
322354
323355@final
324356class Saturate :
357+ span : Span
325358 schedule : _Schedule
326- def __init__ (self , schedule : _Schedule ) -> None : ...
359+ def __init__ (self , span : Span , schedule : _Schedule ) -> None : ...
327360
328361@final
329362class Repeat :
363+ span : Span
330364 length : int
331365 schedule : _Schedule
332- def __init__ (self , length : int , schedule : _Schedule ) -> None : ...
366+ def __init__ (self , span : Span , length : int , schedule : _Schedule ) -> None : ...
333367
334368@final
335369class Run :
370+ span : Span
336371 config : RunConfig
337- def __init__ (self , config : RunConfig ) -> None : ...
372+ def __init__ (self , span : Span , config : RunConfig ) -> None : ...
338373
339374@final
340375class Sequence :
376+ span : Span
341377 schedules : list [_Schedule ]
342- def __init__ (self , schedules : list [_Schedule ]) -> None : ...
378+ def __init__ (self , span : Span , schedules : list [_Schedule ]) -> None : ...
343379
344380_Schedule : TypeAlias = Saturate | Repeat | Run | Sequence
345381
@@ -361,9 +397,10 @@ class Datatype:
361397
362398@final
363399class Declare :
400+ span : Span
364401 name : str
365402 sort : str
366- def __init__ (self , name : str , sort : str ) -> None : ...
403+ def __init__ (self , span : Span , name : str , sort : str ) -> None : ...
367404
368405@final
369406class Sort :
@@ -421,9 +458,10 @@ class Simplify:
421458
422459@final
423460class Calc :
461+ span : Span
424462 identifiers : list [IdentSort ]
425463 exprs : list [_Expr ]
426- def __init__ (self , identifiers : list [IdentSort ], exprs : list [_Expr ]) -> None : ...
464+ def __init__ (self , span : Span , identifiers : list [IdentSort ], exprs : list [_Expr ]) -> None : ...
427465
428466@final
429467class QueryExtract :
@@ -433,14 +471,16 @@ class QueryExtract:
433471
434472@final
435473class Check :
474+ span : Span
436475 facts : list [_Fact ]
437- def __init__ (self , facts : list [_Fact ]) -> None : ...
476+ def __init__ (self , span : Span , facts : list [_Fact ]) -> None : ...
438477
439478@final
440479class PrintFunction :
480+ span : Span
441481 name : str
442482 length : int
443- def __init__ (self , name : str , length : int ) -> None : ...
483+ def __init__ (self , span : Span , name : str , length : int ) -> None : ...
444484
445485@final
446486class PrintSize :
0 commit comments