Skip to main content

forj_python/
token.rs

1// =======================================================================
2// token.rs
3// =======================================================================
4//! A wrapper around [`forj_parser::Token`]
5
6use crate::Span;
7use pyo3::prelude::*;
8use forj_parser::{self, PreprocessorCache};
9
10/// A wrapper around [`forj_parser::Token`]
11#[pyclass(eq, from_py_object, module = "forj_python", str)]
12#[derive(Clone, PartialEq, Eq)]
13pub enum Token {
14    Error(),
15    // 1364-1995
16    Always(),
17    And(),
18    Assign(),
19    Begin(),
20    Buf(),
21    Bufif0(),
22    Bufif1(),
23    Case(),
24    Casex(),
25    Casez(),
26    Cmos(),
27    Deassign(),
28    Default(),
29    Defparam(),
30    Disable(),
31    Edge(),
32    Else(),
33    End(),
34    Endcase(),
35    Endfunction(),
36    Endmodule(),
37    Endprimitive(),
38    Endspecify(),
39    Endtable(),
40    Endtask(),
41    Event(),
42    For(),
43    Force(),
44    Forever(),
45    Fork(),
46    Function(),
47    Highz0(),
48    Highz1(),
49    If(),
50    Ifnone(),
51    Initial(),
52    Inout(),
53    Input(),
54    Integer(),
55    Join(),
56    Large(),
57    Macromodule(),
58    Medium(),
59    Module(),
60    Nand(),
61    Negedge(),
62    Nmos(),
63    Nor(),
64    Not(),
65    Notif0(),
66    Notif1(),
67    Or(),
68    Output(),
69    Parameter(),
70    Pmos(),
71    Posedge(),
72    Primitive(),
73    Pull0(),
74    Pull1(),
75    Pulldown(),
76    Pullup(),
77    Rcmos(),
78    Real(),
79    Realtime(),
80    Reg(),
81    Release(),
82    Repeat(),
83    Rnmos(),
84    Rpmos(),
85    Rtran(),
86    Rtranif0(),
87    Rtranif1(),
88    Scalared(),
89    Small(),
90    Specify(),
91    Specparam(),
92    Strong0(),
93    Strong1(),
94    Supply0(),
95    Supply1(),
96    Table(),
97    Task(),
98    Time(),
99    Tran(),
100    Tranif0(),
101    Tranif1(),
102    Tri(),
103    Tri0(),
104    Tri1(),
105    Triand(),
106    Trior(),
107    Trireg(),
108    Vectored(),
109    Wait(),
110    Wand(),
111    Weak0(),
112    Weak1(),
113    While(),
114    Wire(),
115    Wor(),
116    Xnor(),
117    Xor(),
118    // 1364-2001
119    Automatic(),
120    Cell(),
121    Config(),
122    Design(),
123    Endconfig(),
124    Endgenerate(),
125    Generate(),
126    Genvar(),
127    Incdir(),
128    Include(),
129    Instance(),
130    Liblist(),
131    Library(),
132    Localparam(),
133    Noshowcancelled(),
134    PulsestyleOndetect(),
135    PulsestyleOnevent(),
136    Showcancelled(),
137    Signed(),
138    Unsigned(),
139    Use(),
140    // 1364-2005
141    Uwire(),
142    // 1800-2005
143    Alias(),
144    AlwaysComb(),
145    AlwaysFf(),
146    AlwaysLatch(),
147    Assert(),
148    Assume(),
149    Before(),
150    Bind(),
151    Bins(),
152    Binsof(),
153    Bit(),
154    Break(),
155    Byte(),
156    Chandle(),
157    Class(),
158    Clocking(),
159    Const(),
160    Constraint(),
161    Context(),
162    Continue(),
163    Cover(),
164    Covergroup(),
165    Coverpoint(),
166    Cross(),
167    Dist(),
168    Do(),
169    Endclass(),
170    Endclocking(),
171    Endgroup(),
172    Endinterface(),
173    Endpackage(),
174    Endprogram(),
175    Endproperty(),
176    Endsequence(),
177    Enum(),
178    Expect(),
179    Export(),
180    Extends(),
181    Extern(),
182    Final(),
183    FirstMatch(),
184    Foreach(),
185    Forkjoin(),
186    Iff(),
187    IgnoreBins(),
188    IllegalBins(),
189    Import(),
190    Inside(),
191    Int(),
192    Interface(),
193    Intersect(),
194    JoinAny(),
195    JoinNone(),
196    Local(),
197    Logic(),
198    Longint(),
199    Matches(),
200    Modport(),
201    New(),
202    Null(),
203    Package(),
204    Packed(),
205    Priority(),
206    Program(),
207    Property(),
208    Protected(),
209    Pure(),
210    Rand(),
211    Randc(),
212    Randcase(),
213    Randsequence(),
214    Ref(),
215    Return(),
216    Sequence(),
217    Shortint(),
218    Shortreal(),
219    Solve(),
220    Static(),
221    String(),
222    Struct(),
223    Super(),
224    Tagged(),
225    This(),
226    Throughout(),
227    Timeprecision(),
228    Timeunit(),
229    Type(),
230    Typedef(),
231    Union(),
232    Unique(),
233    Var(),
234    Virtual(),
235    Void(),
236    WaitOrder(),
237    Wildcard(),
238    With(),
239    Within(),
240    // 1800-2009
241    AcceptOn(),
242    Checker(),
243    Endchecker(),
244    Eventually(),
245    Global(),
246    Implies(),
247    Let(),
248    Nexttime(),
249    RejectOn(),
250    Restrict(),
251    SAlways(),
252    SEventually(),
253    SNexttime(),
254    SUntil(),
255    SUntilWith(),
256    Strong(),
257    SyncAcceptOn(),
258    SyncRejectOn(),
259    Unique0(),
260    Until(),
261    UntilWith(),
262    Untyped(),
263    Weak(),
264    // 1800-2012
265    Implements(),
266    Interconnect(),
267    Nettype(),
268    Soft(),
269    // Directives
270    DirUnderscoreFile(),
271    DirUnderscoreLine(),
272    DirBeginKeywords(),
273    DirCelldefine(),
274    DirDefaultNettype(),
275    DirDefine(),
276    DirElse(),
277    DirElsif(),
278    DirEndKeywords(),
279    DirEndcelldefine(),
280    DirEndif(),
281    DirIfdef(),
282    DirIfndef(),
283    DirInclude(),
284    DirLine(),
285    DirNounconnectedDrive(),
286    DirPragma(),
287    DirResetall(),
288    DirTimescale(),
289    DirUnconnectedDrive(),
290    DirUndef(),
291    DirUndefineall(),
292    // Operators
293    Plus(),
294    Minus(),
295    Exclamation(),
296    Quest(),
297    Tilde(),
298    Amp(),
299    TildeAmp(),
300    Pipe(),
301    TildePipe(),
302    Caret(),
303    TildeCaret(),
304    CaretTilde(),
305    Star(),
306    Slash(),
307    Percent(),
308    EqEq(),
309    ExclEq(),
310    PlusEq(),
311    MinusEq(),
312    StarEq(),
313    SlashEq(),
314    PercentEq(),
315    AmpEq(),
316    PipeEq(),
317    CaretEq(),
318    EqEqEq(),
319    ExclEqEq(),
320    EqEqQuest(),
321    ExclEqQuest(),
322    AmpAmp(),
323    AmpAmpAmp(),
324    PipePipe(),
325    StarStar(),
326    Lt(),
327    LtEq(),
328    Gt(),
329    GtEq(),
330    GtGt(),
331    LtLt(),
332    GtGtEq(),
333    LtLtEq(),
334    GtGtGt(),
335    LtLtLt(),
336    GtGtGtEq(),
337    LtLtLtEq(),
338    MinusGt(),
339    MinusGtGt(),
340    LtMinusGt(),
341    PlusPlus(),
342    MinusMinus(),
343    PlusColon(),
344    MinusColon(),
345    PlusSlashMinus(),
346    PlusPercentMinus(),
347    // Symbols
348    Paren(),
349    EParen(),
350    Bracket(),
351    EBracket(),
352    Brace(),
353    EBrace(),
354    Colon(),
355    SColon(),
356    Apost(),
357    Comma(),
358    Period(),
359    Pound(),
360    Dollar(),
361    At(),
362    AtAt(),
363    Eq(),
364    ColonColon(),
365    ColonEq(),
366    ColonSlash(),
367    PoundPound(),
368    PoundMinusPound(),
369    PoundEqPound(),
370    EqGt(),
371    StarGt(),
372    PipeMinusGt(),
373    PipeEqGt(),
374    Bslash(),
375    // Other Language Grammar
376    Std(),
377    PathpulseDollar(),
378    Option(),
379    TypeOption(),
380    Randomize(),
381    Sample(),
382    OneStep(),
383    DollarSetup(),
384    DollarHold(),
385    DollarSetuphold(),
386    DollarRecovery(),
387    DollarRemoval(),
388    DollarRecrem(),
389    DollarSkew(),
390    DollarTimeskew(),
391    DollarFullskew(),
392    DollarPeriod(),
393    DollarWidth(),
394    DollarNochange(),
395    DollarRoot(),
396    DollarUnit(),
397    DollarFatal(),
398    DollarError(),
399    DollarWarning(),
400    DollarInfo(),
401    // Comments
402    OnelineComment { text: String },
403    BlockComment { text: String },
404    // Numbers
405    UnsignedNumber { text: String },
406    FixedPointNumber { text: String },
407    BinaryNumber { text: String },
408    OctalNumber { text: String },
409    DecimalNumber { text: String },
410    HexNumber { text: String },
411    ScientificNumber { text: String },
412    UnbasedUnsizedLiteral { text: String },
413    // Literals
414    SystemTfIdentifier { text: String },
415    SimpleIdentifier { text: String },
416    EscapedIdentifier { text: String },
417    PreprocessorIdentifier { text: String },
418    TextMacro { text: String },
419    ConcatenatedTextMacro { text: String },
420    StringLiteral { text: String },
421    PreprocessorStringLiteral { text: String },
422    TripleQuoteStringLiteral { text: String },
423    PreprocessorTripleQuoteStringLiteral { text: String },
424    Newline(),
425}
426
427impl std::fmt::Display for Token {
428    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
429        let rust_token: forj_parser::Token<'_> = self.into();
430        rust_token.fmt(f)
431    }
432}
433
434impl<'a> From<forj_parser::Token<'a>> for Token {
435    fn from(value: forj_parser::Token<'a>) -> Self {
436        match value {
437            forj_parser::Token::Error => Token::Error(),
438            forj_parser::Token::Always => Token::Always(),
439            forj_parser::Token::And => Token::And(),
440            forj_parser::Token::Assign => Token::Assign(),
441            forj_parser::Token::Begin => Token::Begin(),
442            forj_parser::Token::Buf => Token::Buf(),
443            forj_parser::Token::Bufif0 => Token::Bufif0(),
444            forj_parser::Token::Bufif1 => Token::Bufif1(),
445            forj_parser::Token::Case => Token::Case(),
446            forj_parser::Token::Casex => Token::Casex(),
447            forj_parser::Token::Casez => Token::Casez(),
448            forj_parser::Token::Cmos => Token::Cmos(),
449            forj_parser::Token::Deassign => Token::Deassign(),
450            forj_parser::Token::Default => Token::Default(),
451            forj_parser::Token::Defparam => Token::Defparam(),
452            forj_parser::Token::Disable => Token::Disable(),
453            forj_parser::Token::Edge => Token::Edge(),
454            forj_parser::Token::Else => Token::Else(),
455            forj_parser::Token::End => Token::End(),
456            forj_parser::Token::Endcase => Token::Endcase(),
457            forj_parser::Token::Endfunction => Token::Endfunction(),
458            forj_parser::Token::Endmodule => Token::Endmodule(),
459            forj_parser::Token::Endprimitive => Token::Endprimitive(),
460            forj_parser::Token::Endspecify => Token::Endspecify(),
461            forj_parser::Token::Endtable => Token::Endtable(),
462            forj_parser::Token::Endtask => Token::Endtask(),
463            forj_parser::Token::Event => Token::Event(),
464            forj_parser::Token::For => Token::For(),
465            forj_parser::Token::Force => Token::Force(),
466            forj_parser::Token::Forever => Token::Forever(),
467            forj_parser::Token::Fork => Token::Fork(),
468            forj_parser::Token::Function => Token::Function(),
469            forj_parser::Token::Highz0 => Token::Highz0(),
470            forj_parser::Token::Highz1 => Token::Highz1(),
471            forj_parser::Token::If => Token::If(),
472            forj_parser::Token::Ifnone => Token::Ifnone(),
473            forj_parser::Token::Initial => Token::Initial(),
474            forj_parser::Token::Inout => Token::Inout(),
475            forj_parser::Token::Input => Token::Input(),
476            forj_parser::Token::Integer => Token::Integer(),
477            forj_parser::Token::Join => Token::Join(),
478            forj_parser::Token::Large => Token::Large(),
479            forj_parser::Token::Macromodule => Token::Macromodule(),
480            forj_parser::Token::Medium => Token::Medium(),
481            forj_parser::Token::Module => Token::Module(),
482            forj_parser::Token::Nand => Token::Nand(),
483            forj_parser::Token::Negedge => Token::Negedge(),
484            forj_parser::Token::Nmos => Token::Nmos(),
485            forj_parser::Token::Nor => Token::Nor(),
486            forj_parser::Token::Not => Token::Not(),
487            forj_parser::Token::Notif0 => Token::Notif0(),
488            forj_parser::Token::Notif1 => Token::Notif1(),
489            forj_parser::Token::Or => Token::Or(),
490            forj_parser::Token::Output => Token::Output(),
491            forj_parser::Token::Parameter => Token::Parameter(),
492            forj_parser::Token::Pmos => Token::Pmos(),
493            forj_parser::Token::Posedge => Token::Posedge(),
494            forj_parser::Token::Primitive => Token::Primitive(),
495            forj_parser::Token::Pull0 => Token::Pull0(),
496            forj_parser::Token::Pull1 => Token::Pull1(),
497            forj_parser::Token::Pulldown => Token::Pulldown(),
498            forj_parser::Token::Pullup => Token::Pullup(),
499            forj_parser::Token::Rcmos => Token::Rcmos(),
500            forj_parser::Token::Real => Token::Real(),
501            forj_parser::Token::Realtime => Token::Realtime(),
502            forj_parser::Token::Reg => Token::Reg(),
503            forj_parser::Token::Release => Token::Release(),
504            forj_parser::Token::Repeat => Token::Repeat(),
505            forj_parser::Token::Rnmos => Token::Rnmos(),
506            forj_parser::Token::Rpmos => Token::Rpmos(),
507            forj_parser::Token::Rtran => Token::Rtran(),
508            forj_parser::Token::Rtranif0 => Token::Rtranif0(),
509            forj_parser::Token::Rtranif1 => Token::Rtranif1(),
510            forj_parser::Token::Scalared => Token::Scalared(),
511            forj_parser::Token::Small => Token::Small(),
512            forj_parser::Token::Specify => Token::Specify(),
513            forj_parser::Token::Specparam => Token::Specparam(),
514            forj_parser::Token::Strong0 => Token::Strong0(),
515            forj_parser::Token::Strong1 => Token::Strong1(),
516            forj_parser::Token::Supply0 => Token::Supply0(),
517            forj_parser::Token::Supply1 => Token::Supply1(),
518            forj_parser::Token::Table => Token::Table(),
519            forj_parser::Token::Task => Token::Task(),
520            forj_parser::Token::Time => Token::Time(),
521            forj_parser::Token::Tran => Token::Tran(),
522            forj_parser::Token::Tranif0 => Token::Tranif0(),
523            forj_parser::Token::Tranif1 => Token::Tranif1(),
524            forj_parser::Token::Tri => Token::Tri(),
525            forj_parser::Token::Tri0 => Token::Tri0(),
526            forj_parser::Token::Tri1 => Token::Tri1(),
527            forj_parser::Token::Triand => Token::Triand(),
528            forj_parser::Token::Trior => Token::Trior(),
529            forj_parser::Token::Trireg => Token::Trireg(),
530            forj_parser::Token::Vectored => Token::Vectored(),
531            forj_parser::Token::Wait => Token::Wait(),
532            forj_parser::Token::Wand => Token::Wand(),
533            forj_parser::Token::Weak0 => Token::Weak0(),
534            forj_parser::Token::Weak1 => Token::Weak1(),
535            forj_parser::Token::While => Token::While(),
536            forj_parser::Token::Wire => Token::Wire(),
537            forj_parser::Token::Wor => Token::Wor(),
538            forj_parser::Token::Xnor => Token::Xnor(),
539            forj_parser::Token::Xor => Token::Xor(),
540            forj_parser::Token::Automatic => Token::Automatic(),
541            forj_parser::Token::Cell => Token::Cell(),
542            forj_parser::Token::Config => Token::Config(),
543            forj_parser::Token::Design => Token::Design(),
544            forj_parser::Token::Endconfig => Token::Endconfig(),
545            forj_parser::Token::Endgenerate => Token::Endgenerate(),
546            forj_parser::Token::Generate => Token::Generate(),
547            forj_parser::Token::Genvar => Token::Genvar(),
548            forj_parser::Token::Incdir => Token::Incdir(),
549            forj_parser::Token::Include => Token::Include(),
550            forj_parser::Token::Instance => Token::Instance(),
551            forj_parser::Token::Liblist => Token::Liblist(),
552            forj_parser::Token::Library => Token::Library(),
553            forj_parser::Token::Localparam => Token::Localparam(),
554            forj_parser::Token::Noshowcancelled => Token::Noshowcancelled(),
555            forj_parser::Token::PulsestyleOndetect => {
556                Token::PulsestyleOndetect()
557            }
558            forj_parser::Token::PulsestyleOnevent => {
559                Token::PulsestyleOnevent()
560            }
561            forj_parser::Token::Showcancelled => Token::Showcancelled(),
562            forj_parser::Token::Signed => Token::Signed(),
563            forj_parser::Token::Unsigned => Token::Unsigned(),
564            forj_parser::Token::Use => Token::Use(),
565            forj_parser::Token::Uwire => Token::Uwire(),
566            forj_parser::Token::Alias => Token::Alias(),
567            forj_parser::Token::AlwaysComb => Token::AlwaysComb(),
568            forj_parser::Token::AlwaysFf => Token::AlwaysFf(),
569            forj_parser::Token::AlwaysLatch => Token::AlwaysLatch(),
570            forj_parser::Token::Assert => Token::Assert(),
571            forj_parser::Token::Assume => Token::Assume(),
572            forj_parser::Token::Before => Token::Before(),
573            forj_parser::Token::Bind => Token::Bind(),
574            forj_parser::Token::Bins => Token::Bins(),
575            forj_parser::Token::Binsof => Token::Binsof(),
576            forj_parser::Token::Bit => Token::Bit(),
577            forj_parser::Token::Break => Token::Break(),
578            forj_parser::Token::Byte => Token::Byte(),
579            forj_parser::Token::Chandle => Token::Chandle(),
580            forj_parser::Token::Class => Token::Class(),
581            forj_parser::Token::Clocking => Token::Clocking(),
582            forj_parser::Token::Const => Token::Const(),
583            forj_parser::Token::Constraint => Token::Constraint(),
584            forj_parser::Token::Context => Token::Context(),
585            forj_parser::Token::Continue => Token::Continue(),
586            forj_parser::Token::Cover => Token::Cover(),
587            forj_parser::Token::Covergroup => Token::Covergroup(),
588            forj_parser::Token::Coverpoint => Token::Coverpoint(),
589            forj_parser::Token::Cross => Token::Cross(),
590            forj_parser::Token::Dist => Token::Dist(),
591            forj_parser::Token::Do => Token::Do(),
592            forj_parser::Token::Endclass => Token::Endclass(),
593            forj_parser::Token::Endclocking => Token::Endclocking(),
594            forj_parser::Token::Endgroup => Token::Endgroup(),
595            forj_parser::Token::Endinterface => Token::Endinterface(),
596            forj_parser::Token::Endpackage => Token::Endpackage(),
597            forj_parser::Token::Endprogram => Token::Endprogram(),
598            forj_parser::Token::Endproperty => Token::Endproperty(),
599            forj_parser::Token::Endsequence => Token::Endsequence(),
600            forj_parser::Token::Enum => Token::Enum(),
601            forj_parser::Token::Expect => Token::Expect(),
602            forj_parser::Token::Export => Token::Export(),
603            forj_parser::Token::Extends => Token::Extends(),
604            forj_parser::Token::Extern => Token::Extern(),
605            forj_parser::Token::Final => Token::Final(),
606            forj_parser::Token::FirstMatch => Token::FirstMatch(),
607            forj_parser::Token::Foreach => Token::Foreach(),
608            forj_parser::Token::Forkjoin => Token::Forkjoin(),
609            forj_parser::Token::Iff => Token::Iff(),
610            forj_parser::Token::IgnoreBins => Token::IgnoreBins(),
611            forj_parser::Token::IllegalBins => Token::IllegalBins(),
612            forj_parser::Token::Import => Token::Import(),
613            forj_parser::Token::Inside => Token::Inside(),
614            forj_parser::Token::Int => Token::Int(),
615            forj_parser::Token::Interface => Token::Interface(),
616            forj_parser::Token::Intersect => Token::Intersect(),
617            forj_parser::Token::JoinAny => Token::JoinAny(),
618            forj_parser::Token::JoinNone => Token::JoinNone(),
619            forj_parser::Token::Local => Token::Local(),
620            forj_parser::Token::Logic => Token::Logic(),
621            forj_parser::Token::Longint => Token::Longint(),
622            forj_parser::Token::Matches => Token::Matches(),
623            forj_parser::Token::Modport => Token::Modport(),
624            forj_parser::Token::New => Token::New(),
625            forj_parser::Token::Null => Token::Null(),
626            forj_parser::Token::Package => Token::Package(),
627            forj_parser::Token::Packed => Token::Packed(),
628            forj_parser::Token::Priority => Token::Priority(),
629            forj_parser::Token::Program => Token::Program(),
630            forj_parser::Token::Property => Token::Property(),
631            forj_parser::Token::Protected => Token::Protected(),
632            forj_parser::Token::Pure => Token::Pure(),
633            forj_parser::Token::Rand => Token::Rand(),
634            forj_parser::Token::Randc => Token::Randc(),
635            forj_parser::Token::Randcase => Token::Randcase(),
636            forj_parser::Token::Randsequence => Token::Randsequence(),
637            forj_parser::Token::Ref => Token::Ref(),
638            forj_parser::Token::Return => Token::Return(),
639            forj_parser::Token::Sequence => Token::Sequence(),
640            forj_parser::Token::Shortint => Token::Shortint(),
641            forj_parser::Token::Shortreal => Token::Shortreal(),
642            forj_parser::Token::Solve => Token::Solve(),
643            forj_parser::Token::Static => Token::Static(),
644            forj_parser::Token::String => Token::String(),
645            forj_parser::Token::Struct => Token::Struct(),
646            forj_parser::Token::Super => Token::Super(),
647            forj_parser::Token::Tagged => Token::Tagged(),
648            forj_parser::Token::This => Token::This(),
649            forj_parser::Token::Throughout => Token::Throughout(),
650            forj_parser::Token::Timeprecision => Token::Timeprecision(),
651            forj_parser::Token::Timeunit => Token::Timeunit(),
652            forj_parser::Token::Type => Token::Type(),
653            forj_parser::Token::Typedef => Token::Typedef(),
654            forj_parser::Token::Union => Token::Union(),
655            forj_parser::Token::Unique => Token::Unique(),
656            forj_parser::Token::Var => Token::Var(),
657            forj_parser::Token::Virtual => Token::Virtual(),
658            forj_parser::Token::Void => Token::Void(),
659            forj_parser::Token::WaitOrder => Token::WaitOrder(),
660            forj_parser::Token::Wildcard => Token::Wildcard(),
661            forj_parser::Token::With => Token::With(),
662            forj_parser::Token::Within => Token::Within(),
663            forj_parser::Token::AcceptOn => Token::AcceptOn(),
664            forj_parser::Token::Checker => Token::Checker(),
665            forj_parser::Token::Endchecker => Token::Endchecker(),
666            forj_parser::Token::Eventually => Token::Eventually(),
667            forj_parser::Token::Global => Token::Global(),
668            forj_parser::Token::Implies => Token::Implies(),
669            forj_parser::Token::Let => Token::Let(),
670            forj_parser::Token::Nexttime => Token::Nexttime(),
671            forj_parser::Token::RejectOn => Token::RejectOn(),
672            forj_parser::Token::Restrict => Token::Restrict(),
673            forj_parser::Token::SAlways => Token::SAlways(),
674            forj_parser::Token::SEventually => Token::SEventually(),
675            forj_parser::Token::SNexttime => Token::SNexttime(),
676            forj_parser::Token::SUntil => Token::SUntil(),
677            forj_parser::Token::SUntilWith => Token::SUntilWith(),
678            forj_parser::Token::Strong => Token::Strong(),
679            forj_parser::Token::SyncAcceptOn => Token::SyncAcceptOn(),
680            forj_parser::Token::SyncRejectOn => Token::SyncRejectOn(),
681            forj_parser::Token::Unique0 => Token::Unique0(),
682            forj_parser::Token::Until => Token::Until(),
683            forj_parser::Token::UntilWith => Token::UntilWith(),
684            forj_parser::Token::Untyped => Token::Untyped(),
685            forj_parser::Token::Weak => Token::Weak(),
686            forj_parser::Token::Implements => Token::Implements(),
687            forj_parser::Token::Interconnect => Token::Interconnect(),
688            forj_parser::Token::Nettype => Token::Nettype(),
689            forj_parser::Token::Soft => Token::Soft(),
690            forj_parser::Token::DirUnderscoreFile => {
691                Token::DirUnderscoreFile()
692            }
693            forj_parser::Token::DirUnderscoreLine => {
694                Token::DirUnderscoreLine()
695            }
696            forj_parser::Token::DirBeginKeywords => Token::DirBeginKeywords(),
697            forj_parser::Token::DirCelldefine => Token::DirCelldefine(),
698            forj_parser::Token::DirDefaultNettype => {
699                Token::DirDefaultNettype()
700            }
701            forj_parser::Token::DirDefine => Token::DirDefine(),
702            forj_parser::Token::DirElse => Token::DirElse(),
703            forj_parser::Token::DirElsif => Token::DirElsif(),
704            forj_parser::Token::DirEndKeywords => Token::DirEndKeywords(),
705            forj_parser::Token::DirEndcelldefine => Token::DirEndcelldefine(),
706            forj_parser::Token::DirEndif => Token::DirEndif(),
707            forj_parser::Token::DirIfdef => Token::DirIfdef(),
708            forj_parser::Token::DirIfndef => Token::DirIfndef(),
709            forj_parser::Token::DirInclude => Token::DirInclude(),
710            forj_parser::Token::DirLine => Token::DirLine(),
711            forj_parser::Token::DirNounconnectedDrive => {
712                Token::DirNounconnectedDrive()
713            }
714            forj_parser::Token::DirPragma => Token::DirPragma(),
715            forj_parser::Token::DirResetall => Token::DirResetall(),
716            forj_parser::Token::DirTimescale => Token::DirTimescale(),
717            forj_parser::Token::DirUnconnectedDrive => {
718                Token::DirUnconnectedDrive()
719            }
720            forj_parser::Token::DirUndef => Token::DirUndef(),
721            forj_parser::Token::DirUndefineall => Token::DirUndefineall(),
722            forj_parser::Token::Plus => Token::Plus(),
723            forj_parser::Token::Minus => Token::Minus(),
724            forj_parser::Token::Exclamation => Token::Exclamation(),
725            forj_parser::Token::Quest => Token::Quest(),
726            forj_parser::Token::Tilde => Token::Tilde(),
727            forj_parser::Token::Amp => Token::Amp(),
728            forj_parser::Token::TildeAmp => Token::TildeAmp(),
729            forj_parser::Token::Pipe => Token::Pipe(),
730            forj_parser::Token::TildePipe => Token::TildePipe(),
731            forj_parser::Token::Caret => Token::Caret(),
732            forj_parser::Token::TildeCaret => Token::TildeCaret(),
733            forj_parser::Token::CaretTilde => Token::CaretTilde(),
734            forj_parser::Token::Star => Token::Star(),
735            forj_parser::Token::Slash => Token::Slash(),
736            forj_parser::Token::Percent => Token::Percent(),
737            forj_parser::Token::EqEq => Token::EqEq(),
738            forj_parser::Token::ExclEq => Token::ExclEq(),
739            forj_parser::Token::PlusEq => Token::PlusEq(),
740            forj_parser::Token::MinusEq => Token::MinusEq(),
741            forj_parser::Token::StarEq => Token::StarEq(),
742            forj_parser::Token::SlashEq => Token::SlashEq(),
743            forj_parser::Token::PercentEq => Token::PercentEq(),
744            forj_parser::Token::AmpEq => Token::AmpEq(),
745            forj_parser::Token::PipeEq => Token::PipeEq(),
746            forj_parser::Token::CaretEq => Token::CaretEq(),
747            forj_parser::Token::EqEqEq => Token::EqEqEq(),
748            forj_parser::Token::ExclEqEq => Token::ExclEqEq(),
749            forj_parser::Token::EqEqQuest => Token::EqEqQuest(),
750            forj_parser::Token::ExclEqQuest => Token::ExclEqQuest(),
751            forj_parser::Token::AmpAmp => Token::AmpAmp(),
752            forj_parser::Token::AmpAmpAmp => Token::AmpAmpAmp(),
753            forj_parser::Token::PipePipe => Token::PipePipe(),
754            forj_parser::Token::StarStar => Token::StarStar(),
755            forj_parser::Token::Lt => Token::Lt(),
756            forj_parser::Token::LtEq => Token::LtEq(),
757            forj_parser::Token::Gt => Token::Gt(),
758            forj_parser::Token::GtEq => Token::GtEq(),
759            forj_parser::Token::GtGt => Token::GtGt(),
760            forj_parser::Token::LtLt => Token::LtLt(),
761            forj_parser::Token::GtGtEq => Token::GtGtEq(),
762            forj_parser::Token::LtLtEq => Token::LtLtEq(),
763            forj_parser::Token::GtGtGt => Token::GtGtGt(),
764            forj_parser::Token::LtLtLt => Token::LtLtLt(),
765            forj_parser::Token::GtGtGtEq => Token::GtGtGtEq(),
766            forj_parser::Token::LtLtLtEq => Token::LtLtLtEq(),
767            forj_parser::Token::MinusGt => Token::MinusGt(),
768            forj_parser::Token::MinusGtGt => Token::MinusGtGt(),
769            forj_parser::Token::LtMinusGt => Token::LtMinusGt(),
770            forj_parser::Token::PlusPlus => Token::PlusPlus(),
771            forj_parser::Token::MinusMinus => Token::MinusMinus(),
772            forj_parser::Token::PlusColon => Token::PlusColon(),
773            forj_parser::Token::MinusColon => Token::MinusColon(),
774            forj_parser::Token::PlusSlashMinus => Token::PlusSlashMinus(),
775            forj_parser::Token::PlusPercentMinus => Token::PlusPercentMinus(),
776            forj_parser::Token::Paren => Token::Paren(),
777            forj_parser::Token::EParen => Token::EParen(),
778            forj_parser::Token::Bracket => Token::Bracket(),
779            forj_parser::Token::EBracket => Token::EBracket(),
780            forj_parser::Token::Brace => Token::Brace(),
781            forj_parser::Token::EBrace => Token::EBrace(),
782            forj_parser::Token::Colon => Token::Colon(),
783            forj_parser::Token::SColon => Token::SColon(),
784            forj_parser::Token::Apost => Token::Apost(),
785            forj_parser::Token::Comma => Token::Comma(),
786            forj_parser::Token::Period => Token::Period(),
787            forj_parser::Token::Pound => Token::Pound(),
788            forj_parser::Token::Dollar => Token::Dollar(),
789            forj_parser::Token::At => Token::At(),
790            forj_parser::Token::AtAt => Token::AtAt(),
791            forj_parser::Token::Eq => Token::Eq(),
792            forj_parser::Token::ColonColon => Token::ColonColon(),
793            forj_parser::Token::ColonEq => Token::ColonEq(),
794            forj_parser::Token::ColonSlash => Token::ColonSlash(),
795            forj_parser::Token::PoundPound => Token::PoundPound(),
796            forj_parser::Token::PoundMinusPound => Token::PoundMinusPound(),
797            forj_parser::Token::PoundEqPound => Token::PoundEqPound(),
798            forj_parser::Token::EqGt => Token::EqGt(),
799            forj_parser::Token::StarGt => Token::StarGt(),
800            forj_parser::Token::PipeMinusGt => Token::PipeMinusGt(),
801            forj_parser::Token::PipeEqGt => Token::PipeEqGt(),
802            forj_parser::Token::Bslash => Token::Bslash(),
803            forj_parser::Token::Std => Token::Std(),
804            forj_parser::Token::PathpulseDollar => Token::PathpulseDollar(),
805            forj_parser::Token::Option => Token::Option(),
806            forj_parser::Token::TypeOption => Token::TypeOption(),
807            forj_parser::Token::Randomize => Token::Randomize(),
808            forj_parser::Token::Sample => Token::Sample(),
809            forj_parser::Token::OneStep => Token::OneStep(),
810            forj_parser::Token::DollarSetup => Token::DollarSetup(),
811            forj_parser::Token::DollarHold => Token::DollarHold(),
812            forj_parser::Token::DollarSetuphold => Token::DollarSetuphold(),
813            forj_parser::Token::DollarRecovery => Token::DollarRecovery(),
814            forj_parser::Token::DollarRemoval => Token::DollarRemoval(),
815            forj_parser::Token::DollarRecrem => Token::DollarRecrem(),
816            forj_parser::Token::DollarSkew => Token::DollarSkew(),
817            forj_parser::Token::DollarTimeskew => Token::DollarTimeskew(),
818            forj_parser::Token::DollarFullskew => Token::DollarFullskew(),
819            forj_parser::Token::DollarPeriod => Token::DollarPeriod(),
820            forj_parser::Token::DollarWidth => Token::DollarWidth(),
821            forj_parser::Token::DollarNochange => Token::DollarNochange(),
822            forj_parser::Token::DollarRoot => Token::DollarRoot(),
823            forj_parser::Token::DollarUnit => Token::DollarUnit(),
824            forj_parser::Token::DollarFatal => Token::DollarFatal(),
825            forj_parser::Token::DollarError => Token::DollarError(),
826            forj_parser::Token::DollarWarning => Token::DollarWarning(),
827            forj_parser::Token::DollarInfo => Token::DollarInfo(),
828            forj_parser::Token::OnelineComment(str) => Token::OnelineComment {
829                text: str.to_string(),
830            },
831            forj_parser::Token::BlockComment(str) => Token::BlockComment {
832                text: str.to_string(),
833            },
834            forj_parser::Token::UnsignedNumber(str) => Token::UnsignedNumber {
835                text: str.to_string(),
836            },
837            forj_parser::Token::FixedPointNumber(str) => {
838                Token::FixedPointNumber {
839                    text: str.to_string(),
840                }
841            }
842            forj_parser::Token::BinaryNumber(str) => Token::BinaryNumber {
843                text: str.to_string(),
844            },
845            forj_parser::Token::OctalNumber(str) => Token::OctalNumber {
846                text: str.to_string(),
847            },
848            forj_parser::Token::DecimalNumber(str) => Token::DecimalNumber {
849                text: str.to_string(),
850            },
851            forj_parser::Token::HexNumber(str) => Token::HexNumber {
852                text: str.to_string(),
853            },
854            forj_parser::Token::ScientificNumber(str) => {
855                Token::ScientificNumber {
856                    text: str.to_string(),
857                }
858            }
859            forj_parser::Token::UnbasedUnsizedLiteral(str) => {
860                Token::UnbasedUnsizedLiteral {
861                    text: str.to_string(),
862                }
863            }
864            forj_parser::Token::SystemTfIdentifier(str) => {
865                Token::SystemTfIdentifier {
866                    text: str.to_string(),
867                }
868            }
869            forj_parser::Token::SimpleIdentifier(str) => {
870                Token::SimpleIdentifier {
871                    text: str.to_string(),
872                }
873            }
874            forj_parser::Token::EscapedIdentifier(str) => {
875                Token::EscapedIdentifier {
876                    text: str.to_string(),
877                }
878            }
879            forj_parser::Token::PreprocessorIdentifier(str) => {
880                Token::PreprocessorIdentifier {
881                    text: str.to_string(),
882                }
883            }
884            forj_parser::Token::TextMacro(str) => Token::TextMacro {
885                text: str.to_string(),
886            },
887            forj_parser::Token::ConcatenatedTextMacro(str) => {
888                Token::ConcatenatedTextMacro {
889                    text: str.to_string(),
890                }
891            }
892            forj_parser::Token::StringLiteral(str) => Token::StringLiteral {
893                text: str.to_string(),
894            },
895            forj_parser::Token::PreprocessorStringLiteral(str) => {
896                Token::PreprocessorStringLiteral {
897                    text: str.to_string(),
898                }
899            }
900            forj_parser::Token::TripleQuoteStringLiteral(str) => {
901                Token::TripleQuoteStringLiteral {
902                    text: str.to_string(),
903                }
904            }
905            forj_parser::Token::PreprocessorTripleQuoteStringLiteral(str) => {
906                Token::PreprocessorTripleQuoteStringLiteral {
907                    text: str.to_string(),
908                }
909            }
910            forj_parser::Token::Newline => Token::Newline(),
911        }
912    }
913}
914
915impl<'a> From<&'a Token> for forj_parser::Token<'a> {
916    fn from(value: &'a Token) -> Self {
917        match value {
918            Token::Error() => forj_parser::Token::Error,
919            Token::Always() => forj_parser::Token::Always,
920            Token::And() => forj_parser::Token::And,
921            Token::Assign() => forj_parser::Token::Assign,
922            Token::Begin() => forj_parser::Token::Begin,
923            Token::Buf() => forj_parser::Token::Buf,
924            Token::Bufif0() => forj_parser::Token::Bufif0,
925            Token::Bufif1() => forj_parser::Token::Bufif1,
926            Token::Case() => forj_parser::Token::Case,
927            Token::Casex() => forj_parser::Token::Casex,
928            Token::Casez() => forj_parser::Token::Casez,
929            Token::Cmos() => forj_parser::Token::Cmos,
930            Token::Deassign() => forj_parser::Token::Deassign,
931            Token::Default() => forj_parser::Token::Default,
932            Token::Defparam() => forj_parser::Token::Defparam,
933            Token::Disable() => forj_parser::Token::Disable,
934            Token::Edge() => forj_parser::Token::Edge,
935            Token::Else() => forj_parser::Token::Else,
936            Token::End() => forj_parser::Token::End,
937            Token::Endcase() => forj_parser::Token::Endcase,
938            Token::Endfunction() => forj_parser::Token::Endfunction,
939            Token::Endmodule() => forj_parser::Token::Endmodule,
940            Token::Endprimitive() => forj_parser::Token::Endprimitive,
941            Token::Endspecify() => forj_parser::Token::Endspecify,
942            Token::Endtable() => forj_parser::Token::Endtable,
943            Token::Endtask() => forj_parser::Token::Endtask,
944            Token::Event() => forj_parser::Token::Event,
945            Token::For() => forj_parser::Token::For,
946            Token::Force() => forj_parser::Token::Force,
947            Token::Forever() => forj_parser::Token::Forever,
948            Token::Fork() => forj_parser::Token::Fork,
949            Token::Function() => forj_parser::Token::Function,
950            Token::Highz0() => forj_parser::Token::Highz0,
951            Token::Highz1() => forj_parser::Token::Highz1,
952            Token::If() => forj_parser::Token::If,
953            Token::Ifnone() => forj_parser::Token::Ifnone,
954            Token::Initial() => forj_parser::Token::Initial,
955            Token::Inout() => forj_parser::Token::Inout,
956            Token::Input() => forj_parser::Token::Input,
957            Token::Integer() => forj_parser::Token::Integer,
958            Token::Join() => forj_parser::Token::Join,
959            Token::Large() => forj_parser::Token::Large,
960            Token::Macromodule() => forj_parser::Token::Macromodule,
961            Token::Medium() => forj_parser::Token::Medium,
962            Token::Module() => forj_parser::Token::Module,
963            Token::Nand() => forj_parser::Token::Nand,
964            Token::Negedge() => forj_parser::Token::Negedge,
965            Token::Nmos() => forj_parser::Token::Nmos,
966            Token::Nor() => forj_parser::Token::Nor,
967            Token::Not() => forj_parser::Token::Not,
968            Token::Notif0() => forj_parser::Token::Notif0,
969            Token::Notif1() => forj_parser::Token::Notif1,
970            Token::Or() => forj_parser::Token::Or,
971            Token::Output() => forj_parser::Token::Output,
972            Token::Parameter() => forj_parser::Token::Parameter,
973            Token::Pmos() => forj_parser::Token::Pmos,
974            Token::Posedge() => forj_parser::Token::Posedge,
975            Token::Primitive() => forj_parser::Token::Primitive,
976            Token::Pull0() => forj_parser::Token::Pull0,
977            Token::Pull1() => forj_parser::Token::Pull1,
978            Token::Pulldown() => forj_parser::Token::Pulldown,
979            Token::Pullup() => forj_parser::Token::Pullup,
980            Token::Rcmos() => forj_parser::Token::Rcmos,
981            Token::Real() => forj_parser::Token::Real,
982            Token::Realtime() => forj_parser::Token::Realtime,
983            Token::Reg() => forj_parser::Token::Reg,
984            Token::Release() => forj_parser::Token::Release,
985            Token::Repeat() => forj_parser::Token::Repeat,
986            Token::Rnmos() => forj_parser::Token::Rnmos,
987            Token::Rpmos() => forj_parser::Token::Rpmos,
988            Token::Rtran() => forj_parser::Token::Rtran,
989            Token::Rtranif0() => forj_parser::Token::Rtranif0,
990            Token::Rtranif1() => forj_parser::Token::Rtranif1,
991            Token::Scalared() => forj_parser::Token::Scalared,
992            Token::Small() => forj_parser::Token::Small,
993            Token::Specify() => forj_parser::Token::Specify,
994            Token::Specparam() => forj_parser::Token::Specparam,
995            Token::Strong0() => forj_parser::Token::Strong0,
996            Token::Strong1() => forj_parser::Token::Strong1,
997            Token::Supply0() => forj_parser::Token::Supply0,
998            Token::Supply1() => forj_parser::Token::Supply1,
999            Token::Table() => forj_parser::Token::Table,
1000            Token::Task() => forj_parser::Token::Task,
1001            Token::Time() => forj_parser::Token::Time,
1002            Token::Tran() => forj_parser::Token::Tran,
1003            Token::Tranif0() => forj_parser::Token::Tranif0,
1004            Token::Tranif1() => forj_parser::Token::Tranif1,
1005            Token::Tri() => forj_parser::Token::Tri,
1006            Token::Tri0() => forj_parser::Token::Tri0,
1007            Token::Tri1() => forj_parser::Token::Tri1,
1008            Token::Triand() => forj_parser::Token::Triand,
1009            Token::Trior() => forj_parser::Token::Trior,
1010            Token::Trireg() => forj_parser::Token::Trireg,
1011            Token::Vectored() => forj_parser::Token::Vectored,
1012            Token::Wait() => forj_parser::Token::Wait,
1013            Token::Wand() => forj_parser::Token::Wand,
1014            Token::Weak0() => forj_parser::Token::Weak0,
1015            Token::Weak1() => forj_parser::Token::Weak1,
1016            Token::While() => forj_parser::Token::While,
1017            Token::Wire() => forj_parser::Token::Wire,
1018            Token::Wor() => forj_parser::Token::Wor,
1019            Token::Xnor() => forj_parser::Token::Xnor,
1020            Token::Xor() => forj_parser::Token::Xor,
1021            Token::Automatic() => forj_parser::Token::Automatic,
1022            Token::Cell() => forj_parser::Token::Cell,
1023            Token::Config() => forj_parser::Token::Config,
1024            Token::Design() => forj_parser::Token::Design,
1025            Token::Endconfig() => forj_parser::Token::Endconfig,
1026            Token::Endgenerate() => forj_parser::Token::Endgenerate,
1027            Token::Generate() => forj_parser::Token::Generate,
1028            Token::Genvar() => forj_parser::Token::Genvar,
1029            Token::Incdir() => forj_parser::Token::Incdir,
1030            Token::Include() => forj_parser::Token::Include,
1031            Token::Instance() => forj_parser::Token::Instance,
1032            Token::Liblist() => forj_parser::Token::Liblist,
1033            Token::Library() => forj_parser::Token::Library,
1034            Token::Localparam() => forj_parser::Token::Localparam,
1035            Token::Noshowcancelled() => forj_parser::Token::Noshowcancelled,
1036            Token::PulsestyleOndetect() => {
1037                forj_parser::Token::PulsestyleOndetect
1038            }
1039            Token::PulsestyleOnevent() => {
1040                forj_parser::Token::PulsestyleOnevent
1041            }
1042            Token::Showcancelled() => forj_parser::Token::Showcancelled,
1043            Token::Signed() => forj_parser::Token::Signed,
1044            Token::Unsigned() => forj_parser::Token::Unsigned,
1045            Token::Use() => forj_parser::Token::Use,
1046            Token::Uwire() => forj_parser::Token::Uwire,
1047            Token::Alias() => forj_parser::Token::Alias,
1048            Token::AlwaysComb() => forj_parser::Token::AlwaysComb,
1049            Token::AlwaysFf() => forj_parser::Token::AlwaysFf,
1050            Token::AlwaysLatch() => forj_parser::Token::AlwaysLatch,
1051            Token::Assert() => forj_parser::Token::Assert,
1052            Token::Assume() => forj_parser::Token::Assume,
1053            Token::Before() => forj_parser::Token::Before,
1054            Token::Bind() => forj_parser::Token::Bind,
1055            Token::Bins() => forj_parser::Token::Bins,
1056            Token::Binsof() => forj_parser::Token::Binsof,
1057            Token::Bit() => forj_parser::Token::Bit,
1058            Token::Break() => forj_parser::Token::Break,
1059            Token::Byte() => forj_parser::Token::Byte,
1060            Token::Chandle() => forj_parser::Token::Chandle,
1061            Token::Class() => forj_parser::Token::Class,
1062            Token::Clocking() => forj_parser::Token::Clocking,
1063            Token::Const() => forj_parser::Token::Const,
1064            Token::Constraint() => forj_parser::Token::Constraint,
1065            Token::Context() => forj_parser::Token::Context,
1066            Token::Continue() => forj_parser::Token::Continue,
1067            Token::Cover() => forj_parser::Token::Cover,
1068            Token::Covergroup() => forj_parser::Token::Covergroup,
1069            Token::Coverpoint() => forj_parser::Token::Coverpoint,
1070            Token::Cross() => forj_parser::Token::Cross,
1071            Token::Dist() => forj_parser::Token::Dist,
1072            Token::Do() => forj_parser::Token::Do,
1073            Token::Endclass() => forj_parser::Token::Endclass,
1074            Token::Endclocking() => forj_parser::Token::Endclocking,
1075            Token::Endgroup() => forj_parser::Token::Endgroup,
1076            Token::Endinterface() => forj_parser::Token::Endinterface,
1077            Token::Endpackage() => forj_parser::Token::Endpackage,
1078            Token::Endprogram() => forj_parser::Token::Endprogram,
1079            Token::Endproperty() => forj_parser::Token::Endproperty,
1080            Token::Endsequence() => forj_parser::Token::Endsequence,
1081            Token::Enum() => forj_parser::Token::Enum,
1082            Token::Expect() => forj_parser::Token::Expect,
1083            Token::Export() => forj_parser::Token::Export,
1084            Token::Extends() => forj_parser::Token::Extends,
1085            Token::Extern() => forj_parser::Token::Extern,
1086            Token::Final() => forj_parser::Token::Final,
1087            Token::FirstMatch() => forj_parser::Token::FirstMatch,
1088            Token::Foreach() => forj_parser::Token::Foreach,
1089            Token::Forkjoin() => forj_parser::Token::Forkjoin,
1090            Token::Iff() => forj_parser::Token::Iff,
1091            Token::IgnoreBins() => forj_parser::Token::IgnoreBins,
1092            Token::IllegalBins() => forj_parser::Token::IllegalBins,
1093            Token::Import() => forj_parser::Token::Import,
1094            Token::Inside() => forj_parser::Token::Inside,
1095            Token::Int() => forj_parser::Token::Int,
1096            Token::Interface() => forj_parser::Token::Interface,
1097            Token::Intersect() => forj_parser::Token::Intersect,
1098            Token::JoinAny() => forj_parser::Token::JoinAny,
1099            Token::JoinNone() => forj_parser::Token::JoinNone,
1100            Token::Local() => forj_parser::Token::Local,
1101            Token::Logic() => forj_parser::Token::Logic,
1102            Token::Longint() => forj_parser::Token::Longint,
1103            Token::Matches() => forj_parser::Token::Matches,
1104            Token::Modport() => forj_parser::Token::Modport,
1105            Token::New() => forj_parser::Token::New,
1106            Token::Null() => forj_parser::Token::Null,
1107            Token::Package() => forj_parser::Token::Package,
1108            Token::Packed() => forj_parser::Token::Packed,
1109            Token::Priority() => forj_parser::Token::Priority,
1110            Token::Program() => forj_parser::Token::Program,
1111            Token::Property() => forj_parser::Token::Property,
1112            Token::Protected() => forj_parser::Token::Protected,
1113            Token::Pure() => forj_parser::Token::Pure,
1114            Token::Rand() => forj_parser::Token::Rand,
1115            Token::Randc() => forj_parser::Token::Randc,
1116            Token::Randcase() => forj_parser::Token::Randcase,
1117            Token::Randsequence() => forj_parser::Token::Randsequence,
1118            Token::Ref() => forj_parser::Token::Ref,
1119            Token::Return() => forj_parser::Token::Return,
1120            Token::Sequence() => forj_parser::Token::Sequence,
1121            Token::Shortint() => forj_parser::Token::Shortint,
1122            Token::Shortreal() => forj_parser::Token::Shortreal,
1123            Token::Solve() => forj_parser::Token::Solve,
1124            Token::Static() => forj_parser::Token::Static,
1125            Token::String() => forj_parser::Token::String,
1126            Token::Struct() => forj_parser::Token::Struct,
1127            Token::Super() => forj_parser::Token::Super,
1128            Token::Tagged() => forj_parser::Token::Tagged,
1129            Token::This() => forj_parser::Token::This,
1130            Token::Throughout() => forj_parser::Token::Throughout,
1131            Token::Timeprecision() => forj_parser::Token::Timeprecision,
1132            Token::Timeunit() => forj_parser::Token::Timeunit,
1133            Token::Type() => forj_parser::Token::Type,
1134            Token::Typedef() => forj_parser::Token::Typedef,
1135            Token::Union() => forj_parser::Token::Union,
1136            Token::Unique() => forj_parser::Token::Unique,
1137            Token::Var() => forj_parser::Token::Var,
1138            Token::Virtual() => forj_parser::Token::Virtual,
1139            Token::Void() => forj_parser::Token::Void,
1140            Token::WaitOrder() => forj_parser::Token::WaitOrder,
1141            Token::Wildcard() => forj_parser::Token::Wildcard,
1142            Token::With() => forj_parser::Token::With,
1143            Token::Within() => forj_parser::Token::Within,
1144            Token::AcceptOn() => forj_parser::Token::AcceptOn,
1145            Token::Checker() => forj_parser::Token::Checker,
1146            Token::Endchecker() => forj_parser::Token::Endchecker,
1147            Token::Eventually() => forj_parser::Token::Eventually,
1148            Token::Global() => forj_parser::Token::Global,
1149            Token::Implies() => forj_parser::Token::Implies,
1150            Token::Let() => forj_parser::Token::Let,
1151            Token::Nexttime() => forj_parser::Token::Nexttime,
1152            Token::RejectOn() => forj_parser::Token::RejectOn,
1153            Token::Restrict() => forj_parser::Token::Restrict,
1154            Token::SAlways() => forj_parser::Token::SAlways,
1155            Token::SEventually() => forj_parser::Token::SEventually,
1156            Token::SNexttime() => forj_parser::Token::SNexttime,
1157            Token::SUntil() => forj_parser::Token::SUntil,
1158            Token::SUntilWith() => forj_parser::Token::SUntilWith,
1159            Token::Strong() => forj_parser::Token::Strong,
1160            Token::SyncAcceptOn() => forj_parser::Token::SyncAcceptOn,
1161            Token::SyncRejectOn() => forj_parser::Token::SyncRejectOn,
1162            Token::Unique0() => forj_parser::Token::Unique0,
1163            Token::Until() => forj_parser::Token::Until,
1164            Token::UntilWith() => forj_parser::Token::UntilWith,
1165            Token::Untyped() => forj_parser::Token::Untyped,
1166            Token::Weak() => forj_parser::Token::Weak,
1167            Token::Implements() => forj_parser::Token::Implements,
1168            Token::Interconnect() => forj_parser::Token::Interconnect,
1169            Token::Nettype() => forj_parser::Token::Nettype,
1170            Token::Soft() => forj_parser::Token::Soft,
1171            Token::DirUnderscoreFile() => {
1172                forj_parser::Token::DirUnderscoreFile
1173            }
1174            Token::DirUnderscoreLine() => {
1175                forj_parser::Token::DirUnderscoreLine
1176            }
1177            Token::DirBeginKeywords() => forj_parser::Token::DirBeginKeywords,
1178            Token::DirCelldefine() => forj_parser::Token::DirCelldefine,
1179            Token::DirDefaultNettype() => {
1180                forj_parser::Token::DirDefaultNettype
1181            }
1182            Token::DirDefine() => forj_parser::Token::DirDefine,
1183            Token::DirElse() => forj_parser::Token::DirElse,
1184            Token::DirElsif() => forj_parser::Token::DirElsif,
1185            Token::DirEndKeywords() => forj_parser::Token::DirEndKeywords,
1186            Token::DirEndcelldefine() => forj_parser::Token::DirEndcelldefine,
1187            Token::DirEndif() => forj_parser::Token::DirEndif,
1188            Token::DirIfdef() => forj_parser::Token::DirIfdef,
1189            Token::DirIfndef() => forj_parser::Token::DirIfndef,
1190            Token::DirInclude() => forj_parser::Token::DirInclude,
1191            Token::DirLine() => forj_parser::Token::DirLine,
1192            Token::DirNounconnectedDrive() => {
1193                forj_parser::Token::DirNounconnectedDrive
1194            }
1195            Token::DirPragma() => forj_parser::Token::DirPragma,
1196            Token::DirResetall() => forj_parser::Token::DirResetall,
1197            Token::DirTimescale() => forj_parser::Token::DirTimescale,
1198            Token::DirUnconnectedDrive() => {
1199                forj_parser::Token::DirUnconnectedDrive
1200            }
1201            Token::DirUndef() => forj_parser::Token::DirUndef,
1202            Token::DirUndefineall() => forj_parser::Token::DirUndefineall,
1203            Token::Plus() => forj_parser::Token::Plus,
1204            Token::Minus() => forj_parser::Token::Minus,
1205            Token::Exclamation() => forj_parser::Token::Exclamation,
1206            Token::Quest() => forj_parser::Token::Quest,
1207            Token::Tilde() => forj_parser::Token::Tilde,
1208            Token::Amp() => forj_parser::Token::Amp,
1209            Token::TildeAmp() => forj_parser::Token::TildeAmp,
1210            Token::Pipe() => forj_parser::Token::Pipe,
1211            Token::TildePipe() => forj_parser::Token::TildePipe,
1212            Token::Caret() => forj_parser::Token::Caret,
1213            Token::TildeCaret() => forj_parser::Token::TildeCaret,
1214            Token::CaretTilde() => forj_parser::Token::CaretTilde,
1215            Token::Star() => forj_parser::Token::Star,
1216            Token::Slash() => forj_parser::Token::Slash,
1217            Token::Percent() => forj_parser::Token::Percent,
1218            Token::EqEq() => forj_parser::Token::EqEq,
1219            Token::ExclEq() => forj_parser::Token::ExclEq,
1220            Token::PlusEq() => forj_parser::Token::PlusEq,
1221            Token::MinusEq() => forj_parser::Token::MinusEq,
1222            Token::StarEq() => forj_parser::Token::StarEq,
1223            Token::SlashEq() => forj_parser::Token::SlashEq,
1224            Token::PercentEq() => forj_parser::Token::PercentEq,
1225            Token::AmpEq() => forj_parser::Token::AmpEq,
1226            Token::PipeEq() => forj_parser::Token::PipeEq,
1227            Token::CaretEq() => forj_parser::Token::CaretEq,
1228            Token::EqEqEq() => forj_parser::Token::EqEqEq,
1229            Token::ExclEqEq() => forj_parser::Token::ExclEqEq,
1230            Token::EqEqQuest() => forj_parser::Token::EqEqQuest,
1231            Token::ExclEqQuest() => forj_parser::Token::ExclEqQuest,
1232            Token::AmpAmp() => forj_parser::Token::AmpAmp,
1233            Token::AmpAmpAmp() => forj_parser::Token::AmpAmpAmp,
1234            Token::PipePipe() => forj_parser::Token::PipePipe,
1235            Token::StarStar() => forj_parser::Token::StarStar,
1236            Token::Lt() => forj_parser::Token::Lt,
1237            Token::LtEq() => forj_parser::Token::LtEq,
1238            Token::Gt() => forj_parser::Token::Gt,
1239            Token::GtEq() => forj_parser::Token::GtEq,
1240            Token::GtGt() => forj_parser::Token::GtGt,
1241            Token::LtLt() => forj_parser::Token::LtLt,
1242            Token::GtGtEq() => forj_parser::Token::GtGtEq,
1243            Token::LtLtEq() => forj_parser::Token::LtLtEq,
1244            Token::GtGtGt() => forj_parser::Token::GtGtGt,
1245            Token::LtLtLt() => forj_parser::Token::LtLtLt,
1246            Token::GtGtGtEq() => forj_parser::Token::GtGtGtEq,
1247            Token::LtLtLtEq() => forj_parser::Token::LtLtLtEq,
1248            Token::MinusGt() => forj_parser::Token::MinusGt,
1249            Token::MinusGtGt() => forj_parser::Token::MinusGtGt,
1250            Token::LtMinusGt() => forj_parser::Token::LtMinusGt,
1251            Token::PlusPlus() => forj_parser::Token::PlusPlus,
1252            Token::MinusMinus() => forj_parser::Token::MinusMinus,
1253            Token::PlusColon() => forj_parser::Token::PlusColon,
1254            Token::MinusColon() => forj_parser::Token::MinusColon,
1255            Token::PlusSlashMinus() => forj_parser::Token::PlusSlashMinus,
1256            Token::PlusPercentMinus() => forj_parser::Token::PlusPercentMinus,
1257            Token::Paren() => forj_parser::Token::Paren,
1258            Token::EParen() => forj_parser::Token::EParen,
1259            Token::Bracket() => forj_parser::Token::Bracket,
1260            Token::EBracket() => forj_parser::Token::EBracket,
1261            Token::Brace() => forj_parser::Token::Brace,
1262            Token::EBrace() => forj_parser::Token::EBrace,
1263            Token::Colon() => forj_parser::Token::Colon,
1264            Token::SColon() => forj_parser::Token::SColon,
1265            Token::Apost() => forj_parser::Token::Apost,
1266            Token::Comma() => forj_parser::Token::Comma,
1267            Token::Period() => forj_parser::Token::Period,
1268            Token::Pound() => forj_parser::Token::Pound,
1269            Token::Dollar() => forj_parser::Token::Dollar,
1270            Token::At() => forj_parser::Token::At,
1271            Token::AtAt() => forj_parser::Token::AtAt,
1272            Token::Eq() => forj_parser::Token::Eq,
1273            Token::ColonColon() => forj_parser::Token::ColonColon,
1274            Token::ColonEq() => forj_parser::Token::ColonEq,
1275            Token::ColonSlash() => forj_parser::Token::ColonSlash,
1276            Token::PoundPound() => forj_parser::Token::PoundPound,
1277            Token::PoundMinusPound() => forj_parser::Token::PoundMinusPound,
1278            Token::PoundEqPound() => forj_parser::Token::PoundEqPound,
1279            Token::EqGt() => forj_parser::Token::EqGt,
1280            Token::StarGt() => forj_parser::Token::StarGt,
1281            Token::PipeMinusGt() => forj_parser::Token::PipeMinusGt,
1282            Token::PipeEqGt() => forj_parser::Token::PipeEqGt,
1283            Token::Bslash() => forj_parser::Token::Bslash,
1284            Token::Std() => forj_parser::Token::Std,
1285            Token::PathpulseDollar() => forj_parser::Token::PathpulseDollar,
1286            Token::Option() => forj_parser::Token::Option,
1287            Token::TypeOption() => forj_parser::Token::TypeOption,
1288            Token::Randomize() => forj_parser::Token::Randomize,
1289            Token::Sample() => forj_parser::Token::Sample,
1290            Token::OneStep() => forj_parser::Token::OneStep,
1291            Token::DollarSetup() => forj_parser::Token::DollarSetup,
1292            Token::DollarHold() => forj_parser::Token::DollarHold,
1293            Token::DollarSetuphold() => forj_parser::Token::DollarSetuphold,
1294            Token::DollarRecovery() => forj_parser::Token::DollarRecovery,
1295            Token::DollarRemoval() => forj_parser::Token::DollarRemoval,
1296            Token::DollarRecrem() => forj_parser::Token::DollarRecrem,
1297            Token::DollarSkew() => forj_parser::Token::DollarSkew,
1298            Token::DollarTimeskew() => forj_parser::Token::DollarTimeskew,
1299            Token::DollarFullskew() => forj_parser::Token::DollarFullskew,
1300            Token::DollarPeriod() => forj_parser::Token::DollarPeriod,
1301            Token::DollarWidth() => forj_parser::Token::DollarWidth,
1302            Token::DollarNochange() => forj_parser::Token::DollarNochange,
1303            Token::DollarRoot() => forj_parser::Token::DollarRoot,
1304            Token::DollarUnit() => forj_parser::Token::DollarUnit,
1305            Token::DollarFatal() => forj_parser::Token::DollarFatal,
1306            Token::DollarError() => forj_parser::Token::DollarError,
1307            Token::DollarWarning() => forj_parser::Token::DollarWarning,
1308            Token::DollarInfo() => forj_parser::Token::DollarInfo,
1309            Token::OnelineComment { text } => {
1310                forj_parser::Token::OnelineComment(&text)
1311            }
1312            Token::BlockComment { text } => {
1313                forj_parser::Token::BlockComment(&text)
1314            }
1315            Token::UnsignedNumber { text } => {
1316                forj_parser::Token::UnsignedNumber(&text)
1317            }
1318            Token::FixedPointNumber { text } => {
1319                forj_parser::Token::FixedPointNumber(&text)
1320            }
1321            Token::BinaryNumber { text } => {
1322                forj_parser::Token::BinaryNumber(&text)
1323            }
1324            Token::OctalNumber { text } => {
1325                forj_parser::Token::OctalNumber(&text)
1326            }
1327            Token::DecimalNumber { text } => {
1328                forj_parser::Token::DecimalNumber(&text)
1329            }
1330            Token::HexNumber { text } => forj_parser::Token::HexNumber(&text),
1331            Token::ScientificNumber { text } => {
1332                forj_parser::Token::ScientificNumber(&text)
1333            }
1334            Token::UnbasedUnsizedLiteral { text } => {
1335                forj_parser::Token::UnbasedUnsizedLiteral(&text)
1336            }
1337            Token::SystemTfIdentifier { text } => {
1338                forj_parser::Token::SystemTfIdentifier(&text)
1339            }
1340            Token::SimpleIdentifier { text } => {
1341                forj_parser::Token::SimpleIdentifier(&text)
1342            }
1343            Token::EscapedIdentifier { text } => {
1344                forj_parser::Token::EscapedIdentifier(&text)
1345            }
1346            Token::PreprocessorIdentifier { text } => {
1347                forj_parser::Token::PreprocessorIdentifier(&text)
1348            }
1349            Token::TextMacro { text } => forj_parser::Token::TextMacro(&text),
1350            Token::ConcatenatedTextMacro { text } => {
1351                forj_parser::Token::ConcatenatedTextMacro(&text)
1352            }
1353            Token::StringLiteral { text } => {
1354                forj_parser::Token::StringLiteral(&text)
1355            }
1356            Token::PreprocessorStringLiteral { text } => {
1357                forj_parser::Token::PreprocessorStringLiteral(&text)
1358            }
1359            Token::TripleQuoteStringLiteral { text } => {
1360                forj_parser::Token::TripleQuoteStringLiteral(&text)
1361            }
1362            Token::PreprocessorTripleQuoteStringLiteral { text } => {
1363                forj_parser::Token::PreprocessorTripleQuoteStringLiteral(&text)
1364            }
1365            Token::Newline() => forj_parser::Token::Newline,
1366        }
1367    }
1368}
1369
1370/// A source file [`Token`] with an associated [`Span`]
1371#[pyclass(eq, from_py_object, module = "forj_python", str)]
1372#[derive(Clone, PartialEq, Eq)]
1373pub struct SpannedToken {
1374    #[pyo3(get, set)]
1375    pub token: Token,
1376    #[pyo3(get, set)]
1377    pub span: Span,
1378}
1379
1380impl<'a> From<forj_parser::SpannedToken<'a>> for SpannedToken {
1381    fn from(value: forj_parser::SpannedToken<'a>) -> Self {
1382        Self {
1383            token: value.0.into(),
1384            span: value.1.into(),
1385        }
1386    }
1387}
1388
1389impl std::fmt::Display for SpannedToken {
1390    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1391        self.token.fmt(f)
1392    }
1393}
1394
1395impl<'a> SpannedToken {
1396    /// Turn a [`SpannedToken`] into a [`forj_parser::SpannedToken`]
1397    pub fn to_rust(
1398        &'a self,
1399        cache: &'a PreprocessorCache<'a>,
1400    ) -> forj_parser::SpannedToken<'a> {
1401        forj_parser::SpannedToken(
1402            (&self.token).into(),
1403            (&self.span).to_span(cache),
1404        )
1405    }
1406}