%start Veryl
%title "Veryl grammar"
%comment "Empty grammar generated by `parol`"
%on ColonColonLAngleTerm %push Generic
%on EmbedTerm %enter EmbedHeader
%on EscapedRBraceTerm %pop
%on HashLBracketTerm %push Attr
%user_type Token = crate::veryl_token::Token
%user_type VerylToken = crate::veryl_token::VerylToken
%scanner EmbedHeader {
%on TripleLBraceTerm %enter EmbedBody
}
%scanner EmbedBody {
%auto_newline_off
%auto_ws_off
%on EscapedLBraceTerm %push INITIAL
%on LBraceTerm %push EmbedBodyInner
%on TripleRBraceTerm %enter INITIAL
}
%scanner EmbedBodyInner {
%auto_newline_off
%auto_ws_off
%on EscapedLBraceTerm %push INITIAL
%on LBraceTerm %push EmbedBodyInner
%on RBraceTerm %pop
}
%scanner Generic {
%on ColonColonLAngleTerm %push Generic
%on RAngleTerm %pop
}
%scanner Attr {
%on RBracketTerm %pop
}
%%
/* 0 */ CommentsTerm: <INITIAL, EmbedHeader, Generic, Attr>"(?:(?:(?://.*(?:\r\n|\r|\n))|(?:/\*(?:[^*]|\*+[^*/])*\*+/))\s*)+" : Token;
/* 1 */ StringLiteralTerm: <INITIAL, Attr>"\u{0022}(?:\\[\u{0022}\\fnt]|[^\u{0022}\\\u0000-\u001F])*\u{0022}" : Token;
/* 2 */ ExponentTerm: <INITIAL, Generic>/[0-9]+(?:_[0-9]+)*\.[0-9]+(?:_[0-9]+)*[eE][+-]?[0-9]+(?:_[0-9]+)*/ : Token;
/* 3 */ FixedPointTerm: <INITIAL, Generic>/[0-9]+(?:_[0-9]+)*\.[0-9]+(?:_[0-9]+)*/ : Token;
/* 4 */ BasedTerm: <INITIAL, Generic>/(?:[0-9]+(?:_[0-9]+)*)?'s?[bodh][0-9a-fA-FxzXZ]+(?:_[0-9a-fA-FxzXZ]+)*/ : Token;
/* 5 */ AllBitTerm: <INITIAL, Generic>/(?:[0-9]+(?:_[0-9]+)*)?'[01xzXZ]/ : Token;
/* 6 */ BaseLessTerm: <INITIAL, Generic>/[0-9]+(?:_[0-9]+)*/ : Token;
/* 7 */ MinusColonTerm: '-:' : Token;
/* 8 */ MinusGTTerm: '->' : Token;
/* 9 */ LTMinusTerm: '<-' : Token;
/* 10 */ PlusColonTerm: '+:' : Token;
/* 11 */ AssignmentOperatorTerm: "\+=|-=|\*=|/=|%=|&=|\|=|\^=|<<=|>>=|<<<=|>>>=" : Token;
/* 12 */ DiamondOperatorTerm: '<>' : Token;
/* 13 */ Operator08Term: "\*\*" : Token;
/* 14 */ Operator07Term: "/|%" : Token;
/* 15 */ Operator06Term: "\+|-" : Token;
/* 16 */ Operator02Term: "<<<|>>>|<<|>>|==\?|!=\?|==|!=|<=|>=|<:|>:" : Token;
/* 17 */ Operator01Term: "\|\||&&" : Token;
/* 18 */ Operator05Term: "&" : Token;
/* 19 */ Operator04Term: "\^|~\^" : Token;
/* 20 */ Operator03Term: "\|" : Token;
/* 21 */ UnaryOperatorTerm: "~&|~\||!|~" : Token;
/* 22 */ ColonColonLAngleTerm: <INITIAL, Generic>'::<' : Token;
/* 23 */ ColonColonTerm: <INITIAL, Generic>'::' : Token;
/* 24 */ ColonTerm: <INITIAL, Generic>':' : Token;
/* 25 */ CommaTerm: <INITIAL, Generic, Attr>',' : Token;
/* 26 */ DotDotEquTerm: '..=' : Token;
/* 27 */ DotDotTerm: '..' : Token;
/* 28 */ DotTerm: <INITIAL, Generic>'.' : Token;
/* 29 */ EquTerm: <INITIAL, Generic>'=' : Token;
/* 30 */ HashLBracketTerm: '#[' : Token;
/* 31 */ HashTerm: '#' : Token;
/* 32 */ LAngleTerm: '<' : Token;
/* 33 */ QuestionTerm: '?' : Token;
/* 34 */ QuoteLBraceTerm: "'\{" : Token;
/* 35 */ QuoteTerm: "'" : Token;
/* 36 */ EscapedLBraceTerm: <EmbedBody, EmbedBodyInner>'\{' : Token;
/* 37 */ TripleLBraceTerm: <EmbedHeader>'{{{' : Token;
/* 38 */ LBraceTerm: <INITIAL, EmbedBody, EmbedBodyInner, Attr>'{' : Token;
/* 39 */ LBracketTerm: <INITIAL, Attr>'[' : Token;
/* 40 */ LParenTerm: <INITIAL, EmbedHeader, Attr>'(' : Token;
/* 41 */ RAngleTerm: <INITIAL, Generic>'>' : Token;
/* 42 */ EscapedRBraceTerm: '\}' : Token;
/* 43 */ TripleRBraceTerm: <EmbedBody>'}}}' : Token;
/* 44 */ RBraceTerm: <INITIAL, EmbedBodyInner, Attr>'}' : Token;
/* 45 */ RBracketTerm: <INITIAL, Attr>']' : Token;
/* 46 */ RParenTerm: <INITIAL, EmbedHeader, Attr>')' : Token;
/* 47 */ SemicolonTerm: ';' : Token;
/* 48 */ StarTerm: '*' : Token;
/* 49 */ AliasTerm: <INITIAL, Generic>'alias' : Token;
/* 50 */ AlwaysCombTerm: <INITIAL, Generic>'always_comb' : Token;
/* 51 */ AlwaysFfTerm: <INITIAL, Generic>'always_ff' : Token;
/* 52 */ AssignTerm: <INITIAL, Generic>'assign' : Token;
/* 53 */ AsTerm: <INITIAL, Generic>'as' : Token;
/* 54 */ BindTerm: <INITIAL, Generic>'bind' : Token;
/* 55 */ BitTerm: <INITIAL, Generic>'bit' : Token;
/* 56 */ BlockTerm: <INITIAL, Generic>'block' : Token;
/* 57 */ BBoolTerm: <INITIAL, Generic>'bbool' : Token;
/* 58 */ LBoolTerm: <INITIAL, Generic>'lbool' : Token;
/* 59 */ CaseTerm: <INITIAL, Generic>'case' : Token;
/* 60 */ ClockTerm: <INITIAL, Generic>'clock' : Token;
/* 61 */ ClockPosedgeTerm: <INITIAL, Generic>'clock_posedge' : Token;
/* 62 */ ClockNegedgeTerm: <INITIAL, Generic>'clock_negedge' : Token;
/* 63 */ ConnectTerm: <INITIAL, Generic>'connect' : Token;
/* 64 */ ConstTerm: <INITIAL, Generic>'const' : Token;
/* 65 */ ConverseTerm: <INITIAL, Generic>'converse' : Token;
/* 66 */ DefaultTerm: <INITIAL, Generic>'default' : Token;
/* 67 */ ElseTerm: <INITIAL, Generic>'else' : Token;
/* 68 */ EmbedTerm: <INITIAL, Generic>'embed' : Token;
/* 69 */ EnumTerm: <INITIAL, Generic>'enum' : Token;
/* 70 */ F32Term: <INITIAL, Generic>'f32' : Token;
/* 71 */ F64Term: <INITIAL, Generic>'f64' : Token;
/* 72 */ FalseTerm: <INITIAL, Generic>'false' : Token;
/* 73 */ FinalTerm: <INITIAL, Generic>'final' : Token;
/* 74 */ ForTerm: <INITIAL, Generic>'for' : Token;
/* 75 */ FunctionTerm: <INITIAL, Generic>'function' : Token;
/* 76 */ GenTerm: <INITIAL, Generic>'gen' : Token;
/* 77 */ I8Term: <INITIAL, Generic>'i8' : Token;
/* 78 */ I16Term: <INITIAL, Generic>'i16' : Token;
/* 79 */ I32Term: <INITIAL, Generic>'i32' : Token;
/* 80 */ I64Term: <INITIAL, Generic>'i64' : Token;
/* 81 */ IfResetTerm: <INITIAL, Generic>'if_reset' : Token;
/* 82 */ IfTerm: <INITIAL, Generic>'if' : Token;
/* 83 */ ImportTerm: <INITIAL, Generic>'import' : Token;
/* 84 */ IncludeTerm: <INITIAL, Generic>'include' : Token;
/* 85 */ InitialTerm: <INITIAL, Generic>'initial' : Token;
/* 86 */ InoutTerm: <INITIAL, Generic>'inout' : Token;
/* 87 */ InputTerm: <INITIAL, Generic>'input' : Token;
/* 88 */ InsideTerm: <INITIAL, Generic>'inside' : Token;
/* 89 */ InstTerm: <INITIAL, Generic>'inst' : Token;
/* 90 */ InterfaceTerm: <INITIAL, Generic>'interface' : Token;
/* 91 */ InTerm: <INITIAL, Generic>'in' : Token;
/* 92 */ LetTerm: <INITIAL, Generic>'let' : Token;
/* 93 */ LogicTerm: <INITIAL, Generic>'logic' : Token;
/* 94 */ LsbTerm: <INITIAL, Generic>'lsb' : Token;
/* 95 */ MixinTerm: <INITIAL, Generic>'mixin' : Token;
/* 96 */ ModportTerm: <INITIAL, Generic>'modport' : Token;
/* 97 */ ModuleTerm: <INITIAL, Generic>'module' : Token;
/* 98 */ MsbTerm: <INITIAL, Generic>'msb' : Token;
/* 99 */ OutputTerm: <INITIAL, Generic>'output' : Token;
/* 100 */ OutsideTerm: <INITIAL, Generic>'outside' : Token;
/* 101 */ PackageTerm: <INITIAL, Generic>'package' : Token;
/* 102 */ ParamTerm: <INITIAL, Generic>'param' : Token;
/* 103 */ ProtoTerm: <INITIAL, Generic>'proto' : Token;
/* 104 */ PubTerm: <INITIAL, Generic>'pub' : Token;
/* 105 */ RepeatTerm: <INITIAL, Generic>'repeat' : Token;
/* 106 */ ResetTerm: <INITIAL, Generic>'reset' : Token;
/* 107 */ ResetAsyncHighTerm: <INITIAL, Generic>'reset_async_high' : Token;
/* 108 */ ResetAsyncLowTerm: <INITIAL, Generic>'reset_async_low' : Token;
/* 109 */ ResetSyncHighTerm: <INITIAL, Generic>'reset_sync_high' : Token;
/* 110 */ ResetSyncLowTerm: <INITIAL, Generic>'reset_sync_low' : Token;
/* 111 */ ReturnTerm: <INITIAL, Generic>'return' : Token;
/* 112 */ RevTerm: <INITIAL, Generic>'rev' : Token;
/* 113 */ BreakTerm: <INITIAL, Generic>'break' : Token;
/* 114 */ SameTerm: <INITIAL, Generic>'same' : Token;
/* 115 */ SignedTerm: <INITIAL, Generic>'signed' : Token;
/* 116 */ StepTerm: <INITIAL, Generic>'step' : Token;
/* 117 */ StringTerm: <INITIAL, Generic>'string' : Token;
/* 118 */ StructTerm: <INITIAL, Generic>'struct' : Token;
/* 119 */ SwitchTerm: <INITIAL, Generic>'switch' : Token;
/* 120 */ TriTerm: <INITIAL, Generic>'tri' : Token;
/* 121 */ TrueTerm: <INITIAL, Generic>'true' : Token;
/* 122 */ TypeTerm: <INITIAL, Generic>'type' : Token;
/* 123 */ P8Term: <INITIAL, Generic>'p8' : Token;
/* 124 */ P16Term: <INITIAL, Generic>'p16' : Token;
/* 125 */ P32Term: <INITIAL, Generic>'p32' : Token;
/* 126 */ P64Term: <INITIAL, Generic>'p64' : Token;
/* 127 */ U8Term: <INITIAL, Generic>'u8' : Token;
/* 128 */ U16Term: <INITIAL, Generic>'u16' : Token;
/* 129 */ U32Term: <INITIAL, Generic>'u32' : Token;
/* 130 */ U64Term: <INITIAL, Generic>'u64' : Token;
/* 131 */ UnionTerm: <INITIAL, Generic>'union' : Token;
/* 132 */ UnsafeTerm: <INITIAL, Generic>'unsafe' : Token;
/* 133 */ VarTerm: <INITIAL, Generic>'var' : Token;
/* 134 */ DollarIdentifierTerm: <INITIAL, Generic>/\$[a-zA-Z_][0-9a-zA-Z_$]*/ : Token;
/* 135 */ IdentifierTerm: <INITIAL, EmbedHeader, Generic, Attr>/(?:r#)?[a-zA-Z_][0-9a-zA-Z_$]*/ : Token;
/* 136 */ AnyTerm: <EmbedBody, EmbedBodyInner>/(?:[^{}\\]|\\[^{])+/ : Token;
/* 137 */ Comments: CommentsOpt /* Option */;
/* 138 */ CommentsOpt /* Option<T>::Some */: CommentsTerm;
/* 139 */ CommentsOpt /* Option<T>::None */: ;
/* 140 */ StartToken: Comments;
/* 141 */ StringLiteralToken: StringLiteralTerm : Token Comments;
/* 142 */ ExponentToken: ExponentTerm : Token Comments;
/* 143 */ FixedPointToken: FixedPointTerm : Token Comments;
/* 144 */ BasedToken: BasedTerm : Token Comments;
/* 145 */ BaseLessToken: BaseLessTerm : Token Comments;
/* 146 */ AllBitToken: AllBitTerm : Token Comments;
/* 147 */ AssignmentOperatorToken: AssignmentOperatorTerm : Token Comments;
/* 148 */ DiamondOperatorToken: DiamondOperatorTerm : Token Comments;
/* 149 */ Operator01Token: Operator01Term : Token Comments;
/* 150 */ Operator02Token: Operator02Term : Token Comments;
/* 151 */ Operator03Token: Operator03Term : Token Comments;
/* 152 */ Operator04Token: Operator04Term : Token Comments;
/* 153 */ Operator05Token: Operator05Term : Token Comments;
/* 154 */ Operator06Token: Operator06Term : Token Comments;
/* 155 */ Operator07Token: Operator07Term : Token Comments;
/* 156 */ Operator08Token: Operator08Term : Token Comments;
/* 157 */ UnaryOperatorToken: UnaryOperatorTerm : Token Comments;
/* 158 */ ColonToken: ColonTerm : Token Comments;
/* 159 */ ColonColonLAngleToken: ColonColonLAngleTerm : Token Comments;
/* 160 */ ColonColonToken: ColonColonTerm : Token Comments;
/* 161 */ CommaToken: CommaTerm : Token Comments;
/* 162 */ DotDotToken: DotDotTerm : Token Comments;
/* 163 */ DotDotEquToken: DotDotEquTerm : Token Comments;
/* 164 */ DotToken: DotTerm : Token Comments;
/* 165 */ EquToken: EquTerm : Token Comments;
/* 166 */ HashLBracketToken: HashLBracketTerm : Token Comments;
/* 167 */ HashToken: HashTerm : Token Comments;
/* 168 */ QuestionToken: QuestionTerm : Token Comments;
/* 169 */ QuoteLBraceToken: QuoteLBraceTerm : Token Comments;
/* 170 */ QuoteToken: QuoteTerm : Token Comments;
/* 171 */ LAngleToken: LAngleTerm : Token Comments;
/* 172 */ EmbedLBraceToken: LBraceTerm : Token;
/* 173 */ EscapedLBraceToken: EscapedLBraceTerm : Token;
/* 174 */ TripleLBraceToken: TripleLBraceTerm : Token;
/* 175 */ LBraceToken: LBraceTerm : Token Comments;
/* 176 */ LBracketToken: LBracketTerm : Token Comments;
/* 177 */ LParenToken: LParenTerm : Token Comments;
/* 178 */ LTMinusToken: LTMinusTerm : Token Comments;
/* 179 */ MinusColonToken: MinusColonTerm : Token Comments;
/* 180 */ MinusGTToken: MinusGTTerm : Token Comments;
/* 181 */ PlusColonToken: PlusColonTerm : Token Comments;
/* 182 */ RAngleToken: RAngleTerm : Token Comments;
/* 183 */ EmbedRBraceToken: RBraceTerm : Token;
/* 184 */ EscapedRBraceToken: EscapedRBraceTerm : Token;
/* 185 */ TripleRBraceToken: TripleRBraceTerm : Token Comments;
/* 186 */ RBraceToken: RBraceTerm : Token Comments;
/* 187 */ RBracketToken: RBracketTerm : Token Comments;
/* 188 */ RParenToken: RParenTerm : Token Comments;
/* 189 */ SemicolonToken: SemicolonTerm : Token Comments;
/* 190 */ StarToken: StarTerm : Token Comments;
/* 191 */ AliasToken: AliasTerm : Token Comments;
/* 192 */ AlwaysCombToken: AlwaysCombTerm : Token Comments;
/* 193 */ AlwaysFfToken: AlwaysFfTerm : Token Comments;
/* 194 */ AsToken: AsTerm : Token Comments;
/* 195 */ AssignToken: AssignTerm : Token Comments;
/* 196 */ BindToken: BindTerm : Token Comments;
/* 197 */ BitToken: BitTerm : Token Comments;
/* 198 */ BlockToken: BlockTerm : Token Comments;
/* 199 */ BBoolToken: BBoolTerm : Token Comments;
/* 200 */ LBoolToken: LBoolTerm : Token Comments;
/* 201 */ CaseToken: CaseTerm : Token Comments;
/* 202 */ ClockToken: ClockTerm : Token Comments;
/* 203 */ ClockPosedgeToken: ClockPosedgeTerm : Token Comments;
/* 204 */ ClockNegedgeToken: ClockNegedgeTerm : Token Comments;
/* 205 */ ConnectToken: ConnectTerm : Token Comments;
/* 206 */ ConstToken: ConstTerm : Token Comments;
/* 207 */ ConverseToken: ConverseTerm : Token Comments;
/* 208 */ DefaultToken: DefaultTerm : Token Comments;
/* 209 */ ElseToken: ElseTerm : Token Comments;
/* 210 */ EmbedToken: EmbedTerm : Token Comments;
/* 211 */ EnumToken: EnumTerm : Token Comments;
/* 212 */ F32Token: F32Term : Token Comments;
/* 213 */ F64Token: F64Term : Token Comments;
/* 214 */ FalseToken: FalseTerm : Token Comments;
/* 215 */ FinalToken: FinalTerm : Token Comments;
/* 216 */ ForToken: ForTerm : Token Comments;
/* 217 */ FunctionToken: FunctionTerm : Token Comments;
/* 218 */ GenToken: GenTerm : Token Comments;
/* 219 */ I8Token: I8Term : Token Comments;
/* 220 */ I16Token: I16Term : Token Comments;
/* 221 */ I32Token: I32Term : Token Comments;
/* 222 */ I64Token: I64Term : Token Comments;
/* 223 */ IfResetToken: IfResetTerm : Token Comments;
/* 224 */ IfToken: IfTerm : Token Comments;
/* 225 */ ImportToken: ImportTerm : Token Comments;
/* 226 */ IncludeToken: IncludeTerm : Token Comments;
/* 227 */ InitialToken: InitialTerm : Token Comments;
/* 228 */ InoutToken: InoutTerm : Token Comments;
/* 229 */ InputToken: InputTerm : Token Comments;
/* 230 */ InsideToken: InsideTerm : Token Comments;
/* 231 */ InstToken: InstTerm : Token Comments;
/* 232 */ InterfaceToken: InterfaceTerm : Token Comments;
/* 233 */ InToken: InTerm : Token Comments;
/* 234 */ LetToken: LetTerm : Token Comments;
/* 235 */ LogicToken: LogicTerm : Token Comments;
/* 236 */ LsbToken: LsbTerm : Token Comments;
/* 237 */ MixinToken: MixinTerm : Token Comments;
/* 238 */ ModportToken: ModportTerm : Token Comments;
/* 239 */ ModuleToken: ModuleTerm : Token Comments;
/* 240 */ MsbToken: MsbTerm : Token Comments;
/* 241 */ OutputToken: OutputTerm : Token Comments;
/* 242 */ OutsideToken: OutsideTerm : Token Comments;
/* 243 */ PackageToken: PackageTerm : Token Comments;
/* 244 */ ParamToken: ParamTerm : Token Comments;
/* 245 */ ProtoToken: ProtoTerm : Token Comments;
/* 246 */ PubToken: PubTerm : Token Comments;
/* 247 */ RepeatToken: RepeatTerm : Token Comments;
/* 248 */ ResetToken: ResetTerm : Token Comments;
/* 249 */ ResetAsyncHighToken: ResetAsyncHighTerm : Token Comments;
/* 250 */ ResetAsyncLowToken: ResetAsyncLowTerm : Token Comments;
/* 251 */ ResetSyncHighToken: ResetSyncHighTerm : Token Comments;
/* 252 */ ResetSyncLowToken: ResetSyncLowTerm : Token Comments;
/* 253 */ ReturnToken: ReturnTerm : Token Comments;
/* 254 */ RevToken: RevTerm : Token Comments;
/* 255 */ BreakToken: BreakTerm : Token Comments;
/* 256 */ SameToken: SameTerm : Token Comments;
/* 257 */ SignedToken: SignedTerm : Token Comments;
/* 258 */ StepToken: StepTerm : Token Comments;
/* 259 */ StringToken: StringTerm : Token Comments;
/* 260 */ StructToken: StructTerm : Token Comments;
/* 261 */ SwitchToken: SwitchTerm : Token Comments;
/* 262 */ TriToken: TriTerm : Token Comments;
/* 263 */ TrueToken: TrueTerm : Token Comments;
/* 264 */ TypeToken: TypeTerm : Token Comments;
/* 265 */ P8Token: P8Term : Token Comments;
/* 266 */ P16Token: P16Term : Token Comments;
/* 267 */ P32Token: P32Term : Token Comments;
/* 268 */ P64Token: P64Term : Token Comments;
/* 269 */ U8Token: U8Term : Token Comments;
/* 270 */ U16Token: U16Term : Token Comments;
/* 271 */ U32Token: U32Term : Token Comments;
/* 272 */ U64Token: U64Term : Token Comments;
/* 273 */ UnionToken: UnionTerm : Token Comments;
/* 274 */ UnsafeToken: UnsafeTerm : Token Comments;
/* 275 */ VarToken: VarTerm : Token Comments;
/* 276 */ DollarIdentifierToken: DollarIdentifierTerm : Token Comments;
/* 277 */ IdentifierToken: IdentifierTerm : Token Comments;
/* 278 */ AnyToken: AnyTerm : Token;
/* 279 */ Start: StartToken : VerylToken;
/* 280 */ StringLiteral: StringLiteralToken : VerylToken;
/* 281 */ Exponent: ExponentToken : VerylToken;
/* 282 */ FixedPoint: FixedPointToken : VerylToken;
/* 283 */ Based: BasedToken : VerylToken;
/* 284 */ BaseLess: BaseLessToken : VerylToken;
/* 285 */ AllBit: AllBitToken : VerylToken;
/* 286 */ AssignmentOperator: AssignmentOperatorToken : VerylToken;
/* 287 */ DiamondOperator: DiamondOperatorToken : VerylToken;
/* 288 */ Operator01: Operator01Token : VerylToken;
/* 289 */ Operator02: Operator02Token : VerylToken;
/* 290 */ Operator03: Operator03Token : VerylToken;
/* 291 */ Operator04: Operator04Token : VerylToken;
/* 292 */ Operator05: Operator05Token : VerylToken;
/* 293 */ Operator06: Operator06Token : VerylToken;
/* 294 */ Operator07: Operator07Token : VerylToken;
/* 295 */ Operator08: Operator08Token : VerylToken;
/* 296 */ UnaryOperator: UnaryOperatorToken : VerylToken;
/* 297 */ Colon: ColonToken : VerylToken;
/* 298 */ ColonColonLAngle: ColonColonLAngleToken : VerylToken;
/* 299 */ ColonColon: ColonColonToken : VerylToken;
/* 300 */ Comma: CommaToken : VerylToken;
/* 301 */ DotDot: DotDotToken : VerylToken;
/* 302 */ DotDotEqu: DotDotEquToken : VerylToken;
/* 303 */ Dot: DotToken : VerylToken;
/* 304 */ Equ: EquToken : VerylToken;
/* 305 */ HashLBracket: HashLBracketToken : VerylToken;
/* 306 */ Hash: HashToken : VerylToken;
/* 307 */ Question: QuestionToken : VerylToken;
/* 308 */ QuoteLBrace: QuoteLBraceToken : VerylToken;
/* 309 */ Quote: QuoteToken : VerylToken;
/* 310 */ LAngle: LAngleToken : VerylToken;
/* 311 */ EmbedLBrace: EmbedLBraceToken : VerylToken;
/* 312 */ EscapedLBrace: EscapedLBraceToken : VerylToken;
/* 313 */ TripleLBrace: TripleLBraceToken : VerylToken;
/* 314 */ LBrace: LBraceToken : VerylToken;
/* 315 */ LBracket: LBracketToken : VerylToken;
/* 316 */ LParen: LParenToken : VerylToken;
/* 317 */ LTMinus: LTMinusToken : VerylToken;
/* 318 */ MinusColon: MinusColonToken : VerylToken;
/* 319 */ MinusGT: MinusGTToken : VerylToken;
/* 320 */ PlusColon: PlusColonToken : VerylToken;
/* 321 */ RAngle: RAngleToken : VerylToken;
/* 322 */ EmbedRBrace: EmbedRBraceToken : VerylToken;
/* 323 */ EscapedRBrace: EscapedRBraceToken : VerylToken;
/* 324 */ TripleRBrace: TripleRBraceToken : VerylToken;
/* 325 */ RBrace: RBraceToken : VerylToken;
/* 326 */ RBracket: RBracketToken : VerylToken;
/* 327 */ RParen: RParenToken : VerylToken;
/* 328 */ Semicolon: SemicolonToken : VerylToken;
/* 329 */ Star: StarToken : VerylToken;
/* 330 */ Alias: AliasToken : VerylToken;
/* 331 */ AlwaysComb: AlwaysCombToken : VerylToken;
/* 332 */ AlwaysFf: AlwaysFfToken : VerylToken;
/* 333 */ As: AsToken : VerylToken;
/* 334 */ Assign: AssignToken : VerylToken;
/* 335 */ Bind: BindToken : VerylToken;
/* 336 */ Bit: BitToken : VerylToken;
/* 337 */ Block: BlockToken : VerylToken;
/* 338 */ BBool: BBoolToken : VerylToken;
/* 339 */ LBool: LBoolToken : VerylToken;
/* 340 */ Break: BreakToken : VerylToken;
/* 341 */ Case: CaseToken : VerylToken;
/* 342 */ Clock: ClockToken : VerylToken;
/* 343 */ ClockPosedge: ClockPosedgeToken : VerylToken;
/* 344 */ ClockNegedge: ClockNegedgeToken : VerylToken;
/* 345 */ Connect: ConnectToken : VerylToken;
/* 346 */ Const: ConstToken : VerylToken;
/* 347 */ Converse: ConverseToken : VerylToken;
/* 348 */ Defaul: DefaultToken : VerylToken;
/* 349 */ Else: ElseToken : VerylToken;
/* 350 */ Embed: EmbedToken : VerylToken;
/* 351 */ Enum: EnumToken : VerylToken;
/* 352 */ F32: F32Token : VerylToken;
/* 353 */ F64: F64Token : VerylToken;
/* 354 */ False: FalseToken : VerylToken;
/* 355 */ Final: FinalToken : VerylToken;
/* 356 */ For: ForToken : VerylToken;
/* 357 */ Function: FunctionToken : VerylToken;
/* 358 */ Gen: GenToken : VerylToken;
/* 359 */ I8: I8Token : VerylToken;
/* 360 */ I16: I16Token : VerylToken;
/* 361 */ I32: I32Token : VerylToken;
/* 362 */ I64: I64Token : VerylToken;
/* 363 */ If: IfToken : VerylToken;
/* 364 */ IfReset: IfResetToken : VerylToken;
/* 365 */ Import: ImportToken : VerylToken;
/* 366 */ In: InToken : VerylToken;
/* 367 */ Include: IncludeToken : VerylToken;
/* 368 */ Initial: InitialToken : VerylToken;
/* 369 */ Inout: InoutToken : VerylToken;
/* 370 */ Input: InputToken : VerylToken;
/* 371 */ Inside: InsideToken : VerylToken;
/* 372 */ Inst: InstToken : VerylToken;
/* 373 */ Interface: InterfaceToken : VerylToken;
/* 374 */ Let: LetToken : VerylToken;
/* 375 */ Logic: LogicToken : VerylToken;
/* 376 */ Lsb: LsbToken : VerylToken;
/* 377 */ Mixin: MixinToken : VerylToken;
/* 378 */ Modport: ModportToken : VerylToken;
/* 379 */ Module: ModuleToken : VerylToken;
/* 380 */ Msb: MsbToken : VerylToken;
/* 381 */ Output: OutputToken : VerylToken;
/* 382 */ Outside: OutsideToken : VerylToken;
/* 383 */ Package: PackageToken : VerylToken;
/* 384 */ Param: ParamToken : VerylToken;
/* 385 */ Proto: ProtoToken : VerylToken;
/* 386 */ Pub: PubToken : VerylToken;
/* 387 */ Repeat: RepeatToken : VerylToken;
/* 388 */ Reset: ResetToken : VerylToken;
/* 389 */ ResetAsyncHigh: ResetAsyncHighToken : VerylToken;
/* 390 */ ResetAsyncLow: ResetAsyncLowToken : VerylToken;
/* 391 */ ResetSyncHigh: ResetSyncHighToken : VerylToken;
/* 392 */ ResetSyncLow: ResetSyncLowToken : VerylToken;
/* 393 */ Return: ReturnToken : VerylToken;
/* 394 */ Rev: RevToken : VerylToken;
/* 395 */ Same: SameToken : VerylToken;
/* 396 */ Signed: SignedToken : VerylToken;
/* 397 */ Step: StepToken : VerylToken;
/* 398 */ Strin: StringToken : VerylToken;
/* 399 */ Struct: StructToken : VerylToken;
/* 400 */ Switch: SwitchToken : VerylToken;
/* 401 */ Tri: TriToken : VerylToken;
/* 402 */ True: TrueToken : VerylToken;
/* 403 */ Type: TypeToken : VerylToken;
/* 404 */ P8: P8Token : VerylToken;
/* 405 */ P16: P16Token : VerylToken;
/* 406 */ P32: P32Token : VerylToken;
/* 407 */ P64: P64Token : VerylToken;
/* 408 */ U8: U8Token : VerylToken;
/* 409 */ U16: U16Token : VerylToken;
/* 410 */ U32: U32Token : VerylToken;
/* 411 */ U64: U64Token : VerylToken;
/* 412 */ Union: UnionToken : VerylToken;
/* 413 */ Unsafe: UnsafeToken : VerylToken;
/* 414 */ Var: VarToken : VerylToken;
/* 415 */ DollarIdentifier: DollarIdentifierToken : VerylToken;
/* 416 */ Identifier: IdentifierToken : VerylToken;
/* 417 */ Any: AnyToken : VerylToken;
/* 418 */ Number: IntegralNumber;
/* 419 */ Number: RealNumber;
/* 420 */ IntegralNumber: Based;
/* 421 */ IntegralNumber: BaseLess;
/* 422 */ IntegralNumber: AllBit;
/* 423 */ RealNumber: FixedPoint;
/* 424 */ RealNumber: Exponent;
/* 425 */ HierarchicalIdentifier: Identifier HierarchicalIdentifierList /* Vec */ HierarchicalIdentifierList0 /* Vec */;
/* 426 */ HierarchicalIdentifierList0 /* Vec<T>::Push */: Dot Identifier HierarchicalIdentifierList0List /* Vec */ HierarchicalIdentifierList0;
/* 427 */ HierarchicalIdentifierList0List /* Vec<T>::Push */: Select HierarchicalIdentifierList0List;
/* 428 */ HierarchicalIdentifierList0List /* Vec<T>::New */: ;
/* 429 */ HierarchicalIdentifierList0 /* Vec<T>::New */: ;
/* 430 */ HierarchicalIdentifierList /* Vec<T>::Push */: Select HierarchicalIdentifierList;
/* 431 */ HierarchicalIdentifierList /* Vec<T>::New */: ;
/* 432 */ ScopedIdentifier: ScopedIdentifierGroup ScopedIdentifierList /* Vec */;
/* 433 */ ScopedIdentifierGroup: DollarIdentifier;
/* 434 */ ScopedIdentifierGroup: Identifier ScopedIdentifierOpt /* Option */;
/* 435 */ ScopedIdentifierList /* Vec<T>::Push */: ColonColon Identifier ScopedIdentifierOpt0 /* Option */ ScopedIdentifierList;
/* 436 */ ScopedIdentifierList /* Vec<T>::New */: ;
/* 437 */ ScopedIdentifierOpt0 /* Option<T>::Some */: WithGenericArgument;
/* 438 */ ScopedIdentifierOpt0 /* Option<T>::None */: ;
/* 439 */ ScopedIdentifierOpt /* Option<T>::Some */: WithGenericArgument;
/* 440 */ ScopedIdentifierOpt /* Option<T>::None */: ;
/* 441 */ ExpressionIdentifier: ScopedIdentifier ExpressionIdentifierOpt /* Option */ ExpressionIdentifierList /* Vec */ ExpressionIdentifierList0 /* Vec */;
/* 442 */ ExpressionIdentifierList0 /* Vec<T>::Push */: Dot Identifier ExpressionIdentifierList0List /* Vec */ ExpressionIdentifierList0;
/* 443 */ ExpressionIdentifierList0List /* Vec<T>::Push */: Select ExpressionIdentifierList0List;
/* 444 */ ExpressionIdentifierList0List /* Vec<T>::New */: ;
/* 445 */ ExpressionIdentifierList0 /* Vec<T>::New */: ;
/* 446 */ ExpressionIdentifierList /* Vec<T>::Push */: Select ExpressionIdentifierList;
/* 447 */ ExpressionIdentifierList /* Vec<T>::New */: ;
/* 448 */ ExpressionIdentifierOpt /* Option<T>::Some */: Width;
/* 449 */ ExpressionIdentifierOpt /* Option<T>::None */: ;
/* 450 */ GenericArgIdentifier: ScopedIdentifier GenericArgIdentifierList /* Vec */;
/* 451 */ GenericArgIdentifierList /* Vec<T>::Push */: Dot Identifier GenericArgIdentifierList;
/* 452 */ GenericArgIdentifierList /* Vec<T>::New */: ;
/* 453 */ Expression: IfExpression;
/* 454 */ IfExpression: IfExpressionList /* Vec */ Expression01;
/* 455 */ IfExpressionList /* Vec<T>::Push */: If Expression Question Expression Colon IfExpressionList;
/* 456 */ IfExpressionList /* Vec<T>::New */: ;
/* 457 */ Expression01: Expression02 Expression01List /* Vec */;
/* 458 */ Expression01List /* Vec<T>::Push */: Expression01Op Expression02 Expression01List;
/* 459 */ Expression01List /* Vec<T>::New */: ;
/* 460 */ Expression02: Expression02List /* Vec */ Factor Expression02Opt /* Option */;
/* 461 */ Expression02List /* Vec<T>::Push */: Expression02Op Expression02List;
/* 462 */ Expression02List /* Vec<T>::New */: ;
/* 463 */ Expression02Opt /* Option<T>::Some */: As CastingType;
/* 464 */ Expression02Opt /* Option<T>::None */: ;
/* 465 */ Expression01Op: Operator01;
/* 466 */ Expression01Op: Operator02;
/* 467 */ Expression01Op: Operator03;
/* 468 */ Expression01Op: Operator04;
/* 469 */ Expression01Op: Operator05;
/* 470 */ Expression01Op: Operator06;
/* 471 */ Expression01Op: Operator07;
/* 472 */ Expression01Op: Star;
/* 473 */ Expression01Op: Operator08;
/* 474 */ Expression02Op: UnaryOperator;
/* 475 */ Expression02Op: Operator06;
/* 476 */ Expression02Op: Operator05;
/* 477 */ Expression02Op: Operator03;
/* 478 */ Expression02Op: Operator04;
/* 479 */ Factor: Number;
/* 480 */ Factor: BooleanLiteral;
/* 481 */ Factor: IdentifierFactor;
/* 482 */ Factor: LParen Expression RParen;
/* 483 */ Factor: LBrace ConcatenationList RBrace;
/* 484 */ Factor: QuoteLBrace ArrayLiteralList RBrace;
/* 485 */ Factor: CaseExpression;
/* 486 */ Factor: SwitchExpression;
/* 487 */ Factor: StringLiteral;
/* 488 */ Factor: FactorGroup;
/* 489 */ FactorGroup: Msb;
/* 490 */ FactorGroup: Lsb;
/* 491 */ Factor: InsideExpression;
/* 492 */ Factor: OutsideExpression;
/* 493 */ Factor: TypeExpression;
/* 494 */ Factor: FactorTypeFactor;
/* 495 */ BooleanLiteral: True;
/* 496 */ BooleanLiteral: False;
/* 497 */ IdentifierFactor: ExpressionIdentifier IdentifierFactorOpt /* Option */;
/* 498 */ IdentifierFactorOpt /* Option<T>::Some */: IdentifierFactorOptGroup;
/* 499 */ IdentifierFactorOptGroup: FunctionCall;
/* 500 */ IdentifierFactorOptGroup: StructConstructor;
/* 501 */ IdentifierFactorOpt /* Option<T>::None */: ;
/* 502 */ FactorTypeFactor: FactorTypeFactorList /* Vec */ FactorType;
/* 503 */ FactorTypeFactorList /* Vec<T>::Push */: TypeModifier FactorTypeFactorList;
/* 504 */ FactorTypeFactorList /* Vec<T>::New */: ;
/* 505 */ FunctionCall: LParen FunctionCallOpt /* Option */ RParen;
/* 506 */ FunctionCallOpt /* Option<T>::Some */: ArgumentList;
/* 507 */ FunctionCallOpt /* Option<T>::None */: ;
/* 508 */ ArgumentList: ArgumentItem ArgumentListList /* Vec */ ArgumentListOpt /* Option */;
/* 509 */ ArgumentListList /* Vec<T>::Push */: Comma ArgumentItem ArgumentListList;
/* 510 */ ArgumentListList /* Vec<T>::New */: ;
/* 511 */ ArgumentListOpt /* Option<T>::Some */: Comma;
/* 512 */ ArgumentListOpt /* Option<T>::None */: ;
/* 513 */ ArgumentItem: ArgumentExpression ArgumentItemOpt /* Option */;
/* 514 */ ArgumentItemOpt /* Option<T>::Some */: Colon Expression;
/* 515 */ ArgumentItemOpt /* Option<T>::None */: ;
/* 516 */ ArgumentExpression: Expression;
/* 517 */ StructConstructor: QuoteLBrace StructConstructorList StructConstructorOpt /* Option */ RBrace;
/* 518 */ StructConstructorOpt /* Option<T>::Some */: DotDot Defaul LParen Expression RParen;
/* 519 */ StructConstructorOpt /* Option<T>::None */: ;
/* 520 */ StructConstructorList: StructConstructorItem StructConstructorListList /* Vec */ StructConstructorListOpt /* Option */;
/* 521 */ StructConstructorListList /* Vec<T>::Push */: Comma StructConstructorItem StructConstructorListList;
/* 522 */ StructConstructorListList /* Vec<T>::New */: ;
/* 523 */ StructConstructorListOpt /* Option<T>::Some */: Comma;
/* 524 */ StructConstructorListOpt /* Option<T>::None */: ;
/* 525 */ StructConstructorItem: Identifier Colon Expression;
/* 526 */ ConcatenationList: ConcatenationItem ConcatenationListList /* Vec */ ConcatenationListOpt /* Option */;
/* 527 */ ConcatenationListList /* Vec<T>::Push */: Comma ConcatenationItem ConcatenationListList;
/* 528 */ ConcatenationListList /* Vec<T>::New */: ;
/* 529 */ ConcatenationListOpt /* Option<T>::Some */: Comma;
/* 530 */ ConcatenationListOpt /* Option<T>::None */: ;
/* 531 */ ConcatenationItem: Expression ConcatenationItemOpt /* Option */;
/* 532 */ ConcatenationItemOpt /* Option<T>::Some */: Repeat Expression;
/* 533 */ ConcatenationItemOpt /* Option<T>::None */: ;
/* 534 */ ArrayLiteralList: ArrayLiteralItem ArrayLiteralListList /* Vec */ ArrayLiteralListOpt /* Option */;
/* 535 */ ArrayLiteralListList /* Vec<T>::Push */: Comma ArrayLiteralItem ArrayLiteralListList;
/* 536 */ ArrayLiteralListList /* Vec<T>::New */: ;
/* 537 */ ArrayLiteralListOpt /* Option<T>::Some */: Comma;
/* 538 */ ArrayLiteralListOpt /* Option<T>::None */: ;
/* 539 */ ArrayLiteralItem: ArrayLiteralItemGroup;
/* 540 */ ArrayLiteralItemGroup: Expression ArrayLiteralItemOpt /* Option */;
/* 541 */ ArrayLiteralItemGroup: Defaul Colon Expression;
/* 542 */ ArrayLiteralItemOpt /* Option<T>::Some */: Repeat Expression;
/* 543 */ ArrayLiteralItemOpt /* Option<T>::None */: ;
/* 544 */ CaseExpression: Case Expression LBrace CaseCondition Colon Expression Comma CaseExpressionList /* Vec */ Defaul Colon Expression CaseExpressionOpt /* Option */ RBrace;
/* 545 */ CaseExpressionList /* Vec<T>::Push */: CaseCondition Colon Expression Comma CaseExpressionList;
/* 546 */ CaseExpressionList /* Vec<T>::New */: ;
/* 547 */ CaseExpressionOpt /* Option<T>::Some */: Comma;
/* 548 */ CaseExpressionOpt /* Option<T>::None */: ;
/* 549 */ SwitchExpression: Switch LBrace SwitchCondition Colon Expression Comma SwitchExpressionList /* Vec */ Defaul Colon Expression SwitchExpressionOpt /* Option */ RBrace;
/* 550 */ SwitchExpressionList /* Vec<T>::Push */: SwitchCondition Colon Expression Comma SwitchExpressionList;
/* 551 */ SwitchExpressionList /* Vec<T>::New */: ;
/* 552 */ SwitchExpressionOpt /* Option<T>::Some */: Comma;
/* 553 */ SwitchExpressionOpt /* Option<T>::None */: ;
/* 554 */ TypeExpression: Type LParen Expression RParen;
/* 555 */ InsideExpression: Inside Expression LBrace RangeList RBrace;
/* 556 */ OutsideExpression: Outside Expression LBrace RangeList RBrace;
/* 557 */ RangeList: RangeItem RangeListList /* Vec */ RangeListOpt /* Option */;
/* 558 */ RangeListList /* Vec<T>::Push */: Comma RangeItem RangeListList;
/* 559 */ RangeListList /* Vec<T>::New */: ;
/* 560 */ RangeListOpt /* Option<T>::Some */: Comma;
/* 561 */ RangeListOpt /* Option<T>::None */: ;
/* 562 */ RangeItem: Range;
/* 563 */ Select: LBracket Expression SelectOpt /* Option */ RBracket;
/* 564 */ SelectOpt /* Option<T>::Some */: SelectOperator Expression;
/* 565 */ SelectOpt /* Option<T>::None */: ;
/* 566 */ SelectOperator: Colon;
/* 567 */ SelectOperator: PlusColon;
/* 568 */ SelectOperator: MinusColon;
/* 569 */ SelectOperator: Step;
/* 570 */ Width: LAngle Expression WidthList /* Vec */ RAngle;
/* 571 */ WidthList /* Vec<T>::Push */: Comma Expression WidthList;
/* 572 */ WidthList /* Vec<T>::New */: ;
/* 573 */ Array: LBracket Expression ArrayList /* Vec */ RBracket;
/* 574 */ ArrayList /* Vec<T>::Push */: Comma Expression ArrayList;
/* 575 */ ArrayList /* Vec<T>::New */: ;
/* 576 */ Range: Expression RangeOpt /* Option */;
/* 577 */ RangeOpt /* Option<T>::Some */: RangeOperator Expression;
/* 578 */ RangeOpt /* Option<T>::None */: ;
/* 579 */ RangeOperator: DotDot;
/* 580 */ RangeOperator: DotDotEqu;
/* 581 */ FixedType: P8;
/* 582 */ FixedType: P16;
/* 583 */ FixedType: P32;
/* 584 */ FixedType: P64;
/* 585 */ FixedType: U8;
/* 586 */ FixedType: U16;
/* 587 */ FixedType: U32;
/* 588 */ FixedType: U64;
/* 589 */ FixedType: I8;
/* 590 */ FixedType: I16;
/* 591 */ FixedType: I32;
/* 592 */ FixedType: I64;
/* 593 */ FixedType: F32;
/* 594 */ FixedType: F64;
/* 595 */ FixedType: BBool;
/* 596 */ FixedType: LBool;
/* 597 */ FixedType: Strin;
/* 598 */ VariableType: Clock;
/* 599 */ VariableType: ClockPosedge;
/* 600 */ VariableType: ClockNegedge;
/* 601 */ VariableType: Reset;
/* 602 */ VariableType: ResetAsyncHigh;
/* 603 */ VariableType: ResetAsyncLow;
/* 604 */ VariableType: ResetSyncHigh;
/* 605 */ VariableType: ResetSyncLow;
/* 606 */ VariableType: Logic;
/* 607 */ VariableType: Bit;
/* 608 */ UserDefinedType: ScopedIdentifier;
/* 609 */ TypeModifier: Tri;
/* 610 */ TypeModifier: Signed;
/* 611 */ TypeModifier: Defaul;
/* 612 */ FactorType: FactorTypeGroup;
/* 613 */ FactorTypeGroup: VariableType FactorTypeOpt /* Option */;
/* 614 */ FactorTypeGroup: FixedType;
/* 615 */ FactorTypeOpt /* Option<T>::Some */: Width;
/* 616 */ FactorTypeOpt /* Option<T>::None */: ;
/* 617 */ ScalarType: ScalarTypeList /* Vec */ ScalarTypeGroup;
/* 618 */ ScalarTypeGroup: UserDefinedType ScalarTypeOpt /* Option */;
/* 619 */ ScalarTypeGroup: FactorType;
/* 620 */ ScalarTypeList /* Vec<T>::Push */: TypeModifier ScalarTypeList;
/* 621 */ ScalarTypeList /* Vec<T>::New */: ;
/* 622 */ ScalarTypeOpt /* Option<T>::Some */: Width;
/* 623 */ ScalarTypeOpt /* Option<T>::None */: ;
/* 624 */ ArrayType: ScalarType ArrayTypeOpt /* Option */;
/* 625 */ ArrayTypeOpt /* Option<T>::Some */: Array;
/* 626 */ ArrayTypeOpt /* Option<T>::None */: ;
/* 627 */ CastingType: U8;
/* 628 */ CastingType: U16;
/* 629 */ CastingType: U32;
/* 630 */ CastingType: U64;
/* 631 */ CastingType: P8;
/* 632 */ CastingType: P16;
/* 633 */ CastingType: P32;
/* 634 */ CastingType: P64;
/* 635 */ CastingType: I8;
/* 636 */ CastingType: I16;
/* 637 */ CastingType: I32;
/* 638 */ CastingType: I64;
/* 639 */ CastingType: F32;
/* 640 */ CastingType: F64;
/* 641 */ CastingType: BBool;
/* 642 */ CastingType: LBool;
/* 643 */ CastingType: Clock;
/* 644 */ CastingType: ClockPosedge;
/* 645 */ CastingType: ClockNegedge;
/* 646 */ CastingType: Reset;
/* 647 */ CastingType: ResetAsyncHigh;
/* 648 */ CastingType: ResetAsyncLow;
/* 649 */ CastingType: ResetSyncHigh;
/* 650 */ CastingType: ResetSyncLow;
/* 651 */ CastingType: UserDefinedType;
/* 652 */ CastingType: Based;
/* 653 */ CastingType: BaseLess;
/* 654 */ ClockDomain: Quote Identifier;
/* 655 */ StatementBlock: LBrace StatementBlockList /* Vec */ RBrace;
/* 656 */ StatementBlockList /* Vec<T>::Push */: StatementBlockGroup StatementBlockList;
/* 657 */ StatementBlockList /* Vec<T>::New */: ;
/* 658 */ StatementBlockGroup: StatementBlockGroupList /* Vec */ StatementBlockGroupGroup;
/* 659 */ StatementBlockGroupGroup: Block LBrace StatementBlockGroupGroupList /* Vec */ RBrace;
/* 660 */ StatementBlockGroupGroupList /* Vec<T>::Push */: StatementBlockGroup StatementBlockGroupGroupList;
/* 661 */ StatementBlockGroupGroupList /* Vec<T>::New */: ;
/* 662 */ StatementBlockGroupGroup: StatementBlockItem;
/* 663 */ StatementBlockGroupList /* Vec<T>::Push */: Attribute StatementBlockGroupList;
/* 664 */ StatementBlockGroupList /* Vec<T>::New */: ;
/* 665 */ StatementBlockItem: VarDeclaration;
/* 666 */ StatementBlockItem: LetStatement;
/* 667 */ StatementBlockItem: ConstDeclaration;
/* 668 */ StatementBlockItem: GenDeclaration;
/* 669 */ StatementBlockItem: Statement;
/* 670 */ StatementBlockItem: ConcatenationAssignment;
/* 671 */ Statement: IdentifierStatement;
/* 672 */ Statement: IfStatement;
/* 673 */ Statement: IfResetStatement;
/* 674 */ Statement: ReturnStatement;
/* 675 */ Statement: BreakStatement;
/* 676 */ Statement: ForStatement;
/* 677 */ Statement: CaseStatement;
/* 678 */ Statement: SwitchStatement;
/* 679 */ LetStatement: Let Identifier LetStatementOpt /* Option */ Equ Expression Semicolon;
/* 680 */ LetStatementOpt /* Option<T>::Some */: Colon LetStatementOpt0 /* Option */ ArrayType;
/* 681 */ LetStatementOpt0 /* Option<T>::Some */: ClockDomain;
/* 682 */ LetStatementOpt0 /* Option<T>::None */: ;
/* 683 */ LetStatementOpt /* Option<T>::None */: ;
/* 684 */ IdentifierStatement: ExpressionIdentifier IdentifierStatementGroup Semicolon;
/* 685 */ IdentifierStatementGroup: FunctionCall;
/* 686 */ IdentifierStatementGroup: Assignment;
/* 687 */ ConcatenationAssignment: LBrace AssignConcatenationList RBrace Equ Expression Semicolon;
/* 688 */ Assignment: AssignmentGroup Expression;
/* 689 */ AssignmentGroup: Equ;
/* 690 */ AssignmentGroup: AssignmentOperator;
/* 691 */ AssignmentGroup: DiamondOperator;
/* 692 */ IfStatement: If Expression StatementBlock IfStatementList /* Vec */ IfStatementOpt /* Option */;
/* 693 */ IfStatementList /* Vec<T>::Push */: Else If Expression StatementBlock IfStatementList;
/* 694 */ IfStatementList /* Vec<T>::New */: ;
/* 695 */ IfStatementOpt /* Option<T>::Some */: Else StatementBlock;
/* 696 */ IfStatementOpt /* Option<T>::None */: ;
/* 697 */ IfResetStatement: IfReset StatementBlock IfResetStatementList /* Vec */ IfResetStatementOpt /* Option */;
/* 698 */ IfResetStatementList /* Vec<T>::Push */: Else If Expression StatementBlock IfResetStatementList;
/* 699 */ IfResetStatementList /* Vec<T>::New */: ;
/* 700 */ IfResetStatementOpt /* Option<T>::Some */: Else StatementBlock;
/* 701 */ IfResetStatementOpt /* Option<T>::None */: ;
/* 702 */ ReturnStatement: Return Expression Semicolon;
/* 703 */ BreakStatement: Break Semicolon;
/* 704 */ ForStatement: For Identifier In ForStatementOpt /* Option */ Range ForStatementOpt0 /* Option */ StatementBlock;
/* 705 */ ForStatementOpt0 /* Option<T>::Some */: Step AssignmentOperator Expression;
/* 706 */ ForStatementOpt0 /* Option<T>::None */: ;
/* 707 */ ForStatementOpt /* Option<T>::Some */: Rev;
/* 708 */ ForStatementOpt /* Option<T>::None */: ;
/* 709 */ CaseStatement: Case Expression LBrace CaseStatementList /* Vec */ RBrace;
/* 710 */ CaseStatementList /* Vec<T>::Push */: CaseItem CaseStatementList;
/* 711 */ CaseStatementList /* Vec<T>::New */: ;
/* 712 */ CaseItem: CaseItemGroup Colon CaseItemGroup0;
/* 713 */ CaseItemGroup0: Statement;
/* 714 */ CaseItemGroup0: StatementBlock;
/* 715 */ CaseItemGroup: CaseCondition;
/* 716 */ CaseItemGroup: Defaul;
/* 717 */ CaseCondition: RangeItem CaseConditionList /* Vec */;
/* 718 */ CaseConditionList /* Vec<T>::Push */: Comma RangeItem CaseConditionList;
/* 719 */ CaseConditionList /* Vec<T>::New */: ;
/* 720 */ SwitchStatement: Switch LBrace SwitchStatementList /* Vec */ RBrace;
/* 721 */ SwitchStatementList /* Vec<T>::Push */: SwitchItem SwitchStatementList;
/* 722 */ SwitchStatementList /* Vec<T>::New */: ;
/* 723 */ SwitchItem: SwitchItemGroup Colon SwitchItemGroup0;
/* 724 */ SwitchItemGroup0: Statement;
/* 725 */ SwitchItemGroup0: StatementBlock;
/* 726 */ SwitchItemGroup: SwitchCondition;
/* 727 */ SwitchItemGroup: Defaul;
/* 728 */ SwitchCondition: Expression SwitchConditionList /* Vec */;
/* 729 */ SwitchConditionList /* Vec<T>::Push */: Comma Expression SwitchConditionList;
/* 730 */ SwitchConditionList /* Vec<T>::New */: ;
/* 731 */ Attribute: HashLBracket Identifier AttributeOpt /* Option */ RBracket;
/* 732 */ AttributeOpt /* Option<T>::Some */: LParen AttributeList RParen;
/* 733 */ AttributeOpt /* Option<T>::None */: ;
/* 734 */ AttributeList: AttributeItem AttributeListList /* Vec */ AttributeListOpt /* Option */;
/* 735 */ AttributeListList /* Vec<T>::Push */: Comma AttributeItem AttributeListList;
/* 736 */ AttributeListList /* Vec<T>::New */: ;
/* 737 */ AttributeListOpt /* Option<T>::Some */: Comma;
/* 738 */ AttributeListOpt /* Option<T>::None */: ;
/* 739 */ AttributeItem: Identifier;
/* 740 */ AttributeItem: StringLiteral;
/* 741 */ LetDeclaration: Let Identifier LetDeclarationOpt /* Option */ Equ Expression Semicolon;
/* 742 */ LetDeclarationOpt /* Option<T>::Some */: Colon LetDeclarationOpt0 /* Option */ ArrayType;
/* 743 */ LetDeclarationOpt0 /* Option<T>::Some */: ClockDomain;
/* 744 */ LetDeclarationOpt0 /* Option<T>::None */: ;
/* 745 */ LetDeclarationOpt /* Option<T>::None */: ;
/* 746 */ VarDeclaration: Var Identifier VarDeclarationOpt /* Option */ Semicolon;
/* 747 */ VarDeclarationOpt /* Option<T>::Some */: Colon VarDeclarationOpt0 /* Option */ ArrayType;
/* 748 */ VarDeclarationOpt0 /* Option<T>::Some */: ClockDomain;
/* 749 */ VarDeclarationOpt0 /* Option<T>::None */: ;
/* 750 */ VarDeclarationOpt /* Option<T>::None */: ;
/* 751 */ ConstDeclaration: Const Identifier ConstDeclarationOpt /* Option */ Equ Expression Semicolon;
/* 752 */ ConstDeclarationOpt /* Option<T>::Some */: Colon ConstDeclarationOptGroup;
/* 753 */ ConstDeclarationOptGroup: ArrayType;
/* 754 */ ConstDeclarationOptGroup: Type;
/* 755 */ ConstDeclarationOpt /* Option<T>::None */: ;
/* 756 */ GenDeclaration: Gen Identifier Colon GenDeclarationGroup Equ Expression Semicolon;
/* 757 */ GenDeclarationGroup: GenericProtoBound;
/* 758 */ GenDeclarationGroup: Type;
/* 759 */ TypeDefDeclaration: Type Identifier Equ ArrayType Semicolon;
/* 760 */ AlwaysFfDeclaration: AlwaysFf AlwaysFfDeclarationOpt /* Option */ StatementBlock;
/* 761 */ AlwaysFfDeclarationOpt /* Option<T>::Some */: AlwaysFfEventList;
/* 762 */ AlwaysFfDeclarationOpt /* Option<T>::None */: ;
/* 763 */ AlwaysFfEventList: LParen AlwaysFfClock AlwaysFfEventListOpt /* Option */ RParen;
/* 764 */ AlwaysFfEventListOpt /* Option<T>::Some */: Comma AlwaysFfReset;
/* 765 */ AlwaysFfEventListOpt /* Option<T>::None */: ;
/* 766 */ AlwaysFfClock: HierarchicalIdentifier;
/* 767 */ AlwaysFfReset: HierarchicalIdentifier;
/* 768 */ AlwaysCombDeclaration: AlwaysComb StatementBlock;
/* 769 */ AssignDeclaration: Assign AssignDestination Equ Expression Semicolon;
/* 770 */ AssignDestination: HierarchicalIdentifier;
/* 771 */ AssignDestination: LBrace AssignConcatenationList RBrace;
/* 772 */ AssignConcatenationList: AssignConcatenationItem AssignConcatenationListList /* Vec */ AssignConcatenationListOpt /* Option */;
/* 773 */ AssignConcatenationListList /* Vec<T>::Push */: Comma AssignConcatenationItem AssignConcatenationListList;
/* 774 */ AssignConcatenationListList /* Vec<T>::New */: ;
/* 775 */ AssignConcatenationListOpt /* Option<T>::Some */: Comma;
/* 776 */ AssignConcatenationListOpt /* Option<T>::None */: ;
/* 777 */ AssignConcatenationItem: HierarchicalIdentifier;
/* 778 */ ConnectDeclaration: Connect HierarchicalIdentifier DiamondOperator Expression Semicolon;
/* 779 */ ModportDeclaration: Modport Identifier LBrace ModportDeclarationOpt /* Option */ ModportDeclarationOpt0 /* Option */ RBrace;
/* 780 */ ModportDeclarationOpt0 /* Option<T>::Some */: DotDot ModportDefault;
/* 781 */ ModportDeclarationOpt0 /* Option<T>::None */: ;
/* 782 */ ModportDeclarationOpt /* Option<T>::Some */: ModportList;
/* 783 */ ModportDeclarationOpt /* Option<T>::None */: ;
/* 784 */ ModportList: ModportGroup ModportListList /* Vec */ ModportListOpt /* Option */;
/* 785 */ ModportListList /* Vec<T>::Push */: Comma ModportGroup ModportListList;
/* 786 */ ModportListList /* Vec<T>::New */: ;
/* 787 */ ModportListOpt /* Option<T>::Some */: Comma;
/* 788 */ ModportListOpt /* Option<T>::None */: ;
/* 789 */ ModportGroup: ModportGroupList /* Vec */ ModportGroupGroup;
/* 790 */ ModportGroupGroup: LBrace ModportList RBrace;
/* 791 */ ModportGroupGroup: ModportItem;
/* 792 */ ModportGroupList /* Vec<T>::Push */: Attribute ModportGroupList;
/* 793 */ ModportGroupList /* Vec<T>::New */: ;
/* 794 */ ModportItem: Identifier Colon Direction;
/* 795 */ ModportDefault: Input;
/* 796 */ ModportDefault: Output;
/* 797 */ ModportDefault: Same LParen ModportDefaultList RParen;
/* 798 */ ModportDefault: Converse LParen ModportDefaultList RParen;
/* 799 */ ModportDefaultList: Identifier ModportDefaultListList /* Vec */ ModportDefaultListOpt /* Option */;
/* 800 */ ModportDefaultListList /* Vec<T>::Push */: Comma Identifier ModportDefaultListList;
/* 801 */ ModportDefaultListList /* Vec<T>::New */: ;
/* 802 */ ModportDefaultListOpt /* Option<T>::Some */: Comma;
/* 803 */ ModportDefaultListOpt /* Option<T>::None */: ;
/* 804 */ EnumDeclaration: Enum Identifier EnumDeclarationOpt /* Option */ LBrace EnumList RBrace;
/* 805 */ EnumDeclarationOpt /* Option<T>::Some */: Colon ScalarType;
/* 806 */ EnumDeclarationOpt /* Option<T>::None */: ;
/* 807 */ EnumList: EnumGroup EnumListList /* Vec */ EnumListOpt /* Option */;
/* 808 */ EnumListList /* Vec<T>::Push */: Comma EnumGroup EnumListList;
/* 809 */ EnumListList /* Vec<T>::New */: ;
/* 810 */ EnumListOpt /* Option<T>::Some */: Comma;
/* 811 */ EnumListOpt /* Option<T>::None */: ;
/* 812 */ EnumGroup: EnumGroupList /* Vec */ EnumGroupGroup;
/* 813 */ EnumGroupGroup: LBrace EnumList RBrace;
/* 814 */ EnumGroupGroup: EnumItem;
/* 815 */ EnumGroupList /* Vec<T>::Push */: Attribute EnumGroupList;
/* 816 */ EnumGroupList /* Vec<T>::New */: ;
/* 817 */ EnumItem: Identifier EnumItemOpt /* Option */;
/* 818 */ EnumItemOpt /* Option<T>::Some */: Equ Expression;
/* 819 */ EnumItemOpt /* Option<T>::None */: ;
/* 820 */ StructUnion: Struct;
/* 821 */ StructUnion: Union;
/* 822 */ StructUnionDeclaration: StructUnion Identifier StructUnionDeclarationOpt /* Option */ LBrace StructUnionList RBrace;
/* 823 */ StructUnionDeclarationOpt /* Option<T>::Some */: WithGenericParameter;
/* 824 */ StructUnionDeclarationOpt /* Option<T>::None */: ;
/* 825 */ StructUnionList: StructUnionGroup StructUnionListList /* Vec */ StructUnionListOpt /* Option */;
/* 826 */ StructUnionListList /* Vec<T>::Push */: Comma StructUnionGroup StructUnionListList;
/* 827 */ StructUnionListList /* Vec<T>::New */: ;
/* 828 */ StructUnionListOpt /* Option<T>::Some */: Comma;
/* 829 */ StructUnionListOpt /* Option<T>::None */: ;
/* 830 */ StructUnionGroup: StructUnionGroupList /* Vec */ StructUnionGroupGroup;
/* 831 */ StructUnionGroupGroup: LBrace StructUnionList RBrace;
/* 832 */ StructUnionGroupGroup: StructUnionItem;
/* 833 */ StructUnionGroupList /* Vec<T>::Push */: Attribute StructUnionGroupList;
/* 834 */ StructUnionGroupList /* Vec<T>::New */: ;
/* 835 */ StructUnionItem: Identifier Colon ScalarType;
/* 836 */ InitialDeclaration: Initial StatementBlock;
/* 837 */ FinalDeclaration: Final StatementBlock;
/* 838 */ InstDeclaration: Inst ComponentInstantiation Semicolon;
/* 839 */ BindDeclaration: Bind ScopedIdentifier LTMinus ComponentInstantiation Semicolon;
/* 840 */ ComponentInstantiation: Identifier Colon ComponentInstantiationOpt /* Option */ ScopedIdentifier ComponentInstantiationOpt0 /* Option */ ComponentInstantiationOpt1 /* Option */ ComponentInstantiationOpt2 /* Option */;
/* 841 */ ComponentInstantiationOpt2 /* Option<T>::Some */: InstPort;
/* 842 */ ComponentInstantiationOpt2 /* Option<T>::None */: ;
/* 843 */ ComponentInstantiationOpt1 /* Option<T>::Some */: InstParameter;
/* 844 */ ComponentInstantiationOpt1 /* Option<T>::None */: ;
/* 845 */ ComponentInstantiationOpt0 /* Option<T>::Some */: Array;
/* 846 */ ComponentInstantiationOpt0 /* Option<T>::None */: ;
/* 847 */ ComponentInstantiationOpt /* Option<T>::Some */: ClockDomain;
/* 848 */ ComponentInstantiationOpt /* Option<T>::None */: ;
/* 849 */ InstParameter: Hash LParen InstParameterOpt /* Option */ RParen;
/* 850 */ InstParameterOpt /* Option<T>::Some */: InstParameterList;
/* 851 */ InstParameterOpt /* Option<T>::None */: ;
/* 852 */ InstParameterList: InstParameterGroup InstParameterListList /* Vec */ InstParameterListOpt /* Option */;
/* 853 */ InstParameterListList /* Vec<T>::Push */: Comma InstParameterGroup InstParameterListList;
/* 854 */ InstParameterListList /* Vec<T>::New */: ;
/* 855 */ InstParameterListOpt /* Option<T>::Some */: Comma;
/* 856 */ InstParameterListOpt /* Option<T>::None */: ;
/* 857 */ InstParameterGroup: InstParameterGroupList /* Vec */ InstParameterGroupGroup;
/* 858 */ InstParameterGroupGroup: LBrace InstParameterList RBrace;
/* 859 */ InstParameterGroupGroup: InstParameterItem;
/* 860 */ InstParameterGroupList /* Vec<T>::Push */: Attribute InstParameterGroupList;
/* 861 */ InstParameterGroupList /* Vec<T>::New */: ;
/* 862 */ InstParameterItem: Identifier InstParameterItemOpt /* Option */;
/* 863 */ InstParameterItemOpt /* Option<T>::Some */: Colon Expression;
/* 864 */ InstParameterItemOpt /* Option<T>::None */: ;
/* 865 */ InstPort: LParen InstPortOpt /* Option */ RParen;
/* 866 */ InstPortOpt /* Option<T>::Some */: InstPortList;
/* 867 */ InstPortOpt /* Option<T>::None */: ;
/* 868 */ InstPortList: InstPortGroup InstPortListList /* Vec */ InstPortListOpt /* Option */;
/* 869 */ InstPortListList /* Vec<T>::Push */: Comma InstPortGroup InstPortListList;
/* 870 */ InstPortListList /* Vec<T>::New */: ;
/* 871 */ InstPortListOpt /* Option<T>::Some */: Comma;
/* 872 */ InstPortListOpt /* Option<T>::None */: ;
/* 873 */ InstPortGroup: InstPortGroupList /* Vec */ InstPortGroupGroup;
/* 874 */ InstPortGroupGroup: LBrace InstPortList RBrace;
/* 875 */ InstPortGroupGroup: InstPortItem;
/* 876 */ InstPortGroupList /* Vec<T>::Push */: Attribute InstPortGroupList;
/* 877 */ InstPortGroupList /* Vec<T>::New */: ;
/* 878 */ InstPortItem: Identifier InstPortItemOpt /* Option */;
/* 879 */ InstPortItemOpt /* Option<T>::Some */: Colon Expression;
/* 880 */ InstPortItemOpt /* Option<T>::None */: ;
/* 881 */ WithParameter: Hash LParen WithParameterOpt /* Option */ RParen;
/* 882 */ WithParameterOpt /* Option<T>::Some */: WithParameterList;
/* 883 */ WithParameterOpt /* Option<T>::None */: ;
/* 884 */ WithParameterList: WithParameterGroup WithParameterListList /* Vec */ WithParameterListOpt /* Option */;
/* 885 */ WithParameterListList /* Vec<T>::Push */: Comma WithParameterGroup WithParameterListList;
/* 886 */ WithParameterListList /* Vec<T>::New */: ;
/* 887 */ WithParameterListOpt /* Option<T>::Some */: Comma;
/* 888 */ WithParameterListOpt /* Option<T>::None */: ;
/* 889 */ WithParameterGroup: WithParameterGroupList /* Vec */ WithParameterGroupGroup;
/* 890 */ WithParameterGroupGroup: LBrace WithParameterList RBrace;
/* 891 */ WithParameterGroupGroup: WithParameterItem;
/* 892 */ WithParameterGroupList /* Vec<T>::Push */: Attribute WithParameterGroupList;
/* 893 */ WithParameterGroupList /* Vec<T>::New */: ;
/* 894 */ WithParameterItem: WithParameterItemGroup Identifier Colon WithParameterItemGroup0 WithParameterItemOpt /* Option */;
/* 895 */ WithParameterItemGroup0: ArrayType;
/* 896 */ WithParameterItemGroup0: Type;
/* 897 */ WithParameterItemGroup: Param;
/* 898 */ WithParameterItemGroup: Const;
/* 899 */ WithParameterItemOpt /* Option<T>::Some */: Equ Expression;
/* 900 */ WithParameterItemOpt /* Option<T>::None */: ;
/* 901 */ GenericBound: Type;
/* 902 */ GenericBound: Inst ScopedIdentifier;
/* 903 */ GenericBound: GenericProtoBound;
/* 904 */ WithGenericParameter: ColonColonLAngle WithGenericParameterList RAngle;
/* 905 */ WithGenericParameterList: WithGenericParameterItem WithGenericParameterListList /* Vec */ WithGenericParameterListOpt /* Option */;
/* 906 */ WithGenericParameterListList /* Vec<T>::Push */: Comma WithGenericParameterItem WithGenericParameterListList;
/* 907 */ WithGenericParameterListList /* Vec<T>::New */: ;
/* 908 */ WithGenericParameterListOpt /* Option<T>::Some */: Comma;
/* 909 */ WithGenericParameterListOpt /* Option<T>::None */: ;
/* 910 */ WithGenericParameterItem: Identifier Colon GenericBound WithGenericParameterItemOpt /* Option */;
/* 911 */ WithGenericParameterItemOpt /* Option<T>::Some */: Equ WithGenericArgumentItem;
/* 912 */ WithGenericParameterItemOpt /* Option<T>::None */: ;
/* 913 */ GenericProtoBound: ScopedIdentifier;
/* 914 */ GenericProtoBound: FixedType;
/* 915 */ WithGenericArgument: ColonColonLAngle WithGenericArgumentOpt /* Option */ RAngle;
/* 916 */ WithGenericArgumentOpt /* Option<T>::Some */: WithGenericArgumentList;
/* 917 */ WithGenericArgumentOpt /* Option<T>::None */: ;
/* 918 */ WithGenericArgumentList: WithGenericArgumentItem WithGenericArgumentListList /* Vec */ WithGenericArgumentListOpt /* Option */;
/* 919 */ WithGenericArgumentListList /* Vec<T>::Push */: Comma WithGenericArgumentItem WithGenericArgumentListList;
/* 920 */ WithGenericArgumentListList /* Vec<T>::New */: ;
/* 921 */ WithGenericArgumentListOpt /* Option<T>::Some */: Comma;
/* 922 */ WithGenericArgumentListOpt /* Option<T>::None */: ;
/* 923 */ WithGenericArgumentItem: GenericArgIdentifier;
/* 924 */ WithGenericArgumentItem: FixedType;
/* 925 */ WithGenericArgumentItem: Number;
/* 926 */ WithGenericArgumentItem: BooleanLiteral;
/* 927 */ PortDeclaration: LParen PortDeclarationOpt /* Option */ RParen;
/* 928 */ PortDeclarationOpt /* Option<T>::Some */: PortDeclarationList;
/* 929 */ PortDeclarationOpt /* Option<T>::None */: ;
/* 930 */ PortDeclarationList: PortDeclarationGroup PortDeclarationListList /* Vec */ PortDeclarationListOpt /* Option */;
/* 931 */ PortDeclarationListList /* Vec<T>::Push */: Comma PortDeclarationGroup PortDeclarationListList;
/* 932 */ PortDeclarationListList /* Vec<T>::New */: ;
/* 933 */ PortDeclarationListOpt /* Option<T>::Some */: Comma;
/* 934 */ PortDeclarationListOpt /* Option<T>::None */: ;
/* 935 */ PortDeclarationGroup: PortDeclarationGroupList /* Vec */ PortDeclarationGroupGroup;
/* 936 */ PortDeclarationGroupGroup: LBrace PortDeclarationList RBrace;
/* 937 */ PortDeclarationGroupGroup: PortDeclarationItem;
/* 938 */ PortDeclarationGroupList /* Vec<T>::Push */: Attribute PortDeclarationGroupList;
/* 939 */ PortDeclarationGroupList /* Vec<T>::New */: ;
/* 940 */ PortDeclarationItem: Identifier Colon PortDeclarationItemGroup;
/* 941 */ PortDeclarationItemGroup: PortTypeConcrete;
/* 942 */ PortDeclarationItemGroup: PortTypeAbstract;
/* 943 */ PortTypeConcrete: Direction PortTypeConcreteOpt /* Option */ ArrayType PortTypeConcreteOpt0 /* Option */;
/* 944 */ PortTypeConcreteOpt0 /* Option<T>::Some */: Equ PortDefaultValue;
/* 945 */ PortTypeConcreteOpt0 /* Option<T>::None */: ;
/* 946 */ PortTypeConcreteOpt /* Option<T>::Some */: ClockDomain;
/* 947 */ PortTypeConcreteOpt /* Option<T>::None */: ;
/* 948 */ PortDefaultValue: Expression;
/* 949 */ PortTypeAbstract: PortTypeAbstractOpt /* Option */ Interface PortTypeAbstractOpt0 /* Option */ PortTypeAbstractOpt1 /* Option */;
/* 950 */ PortTypeAbstractOpt1 /* Option<T>::Some */: Array;
/* 951 */ PortTypeAbstractOpt1 /* Option<T>::None */: ;
/* 952 */ PortTypeAbstractOpt0 /* Option<T>::Some */: ColonColon Identifier;
/* 953 */ PortTypeAbstractOpt0 /* Option<T>::None */: ;
/* 954 */ PortTypeAbstractOpt /* Option<T>::Some */: ClockDomain;
/* 955 */ PortTypeAbstractOpt /* Option<T>::None */: ;
/* 956 */ Direction: Input;
/* 957 */ Direction: Output;
/* 958 */ Direction: Inout;
/* 959 */ Direction: Modport;
/* 960 */ Direction: Import;
/* 961 */ FunctionDeclaration: Function Identifier FunctionDeclarationOpt /* Option */ FunctionDeclarationOpt0 /* Option */ FunctionDeclarationOpt1 /* Option */ StatementBlock;
/* 962 */ FunctionDeclarationOpt1 /* Option<T>::Some */: MinusGT ScalarType;
/* 963 */ FunctionDeclarationOpt1 /* Option<T>::None */: ;
/* 964 */ FunctionDeclarationOpt0 /* Option<T>::Some */: PortDeclaration;
/* 965 */ FunctionDeclarationOpt0 /* Option<T>::None */: ;
/* 966 */ FunctionDeclarationOpt /* Option<T>::Some */: WithGenericParameter;
/* 967 */ FunctionDeclarationOpt /* Option<T>::None */: ;
/* 968 */ ImportDeclaration: Import ScopedIdentifier ImportDeclarationOpt /* Option */ Semicolon;
/* 969 */ ImportDeclarationOpt /* Option<T>::Some */: ColonColon ImportDeclarationOptGroup;
/* 970 */ ImportDeclarationOptGroup: Star;
/* 971 */ ImportDeclarationOptGroup: MultipleImportList;
/* 972 */ ImportDeclarationOpt /* Option<T>::None */: ;
/* 973 */ MultipleImportList: LBrace MultipleImportItem MultipleImportListList /* Vec */ MultipleImportListOpt /* Option */ RBrace;
/* 974 */ MultipleImportListList /* Vec<T>::Push */: Comma MultipleImportItem MultipleImportListList;
/* 975 */ MultipleImportListList /* Vec<T>::New */: ;
/* 976 */ MultipleImportListOpt /* Option<T>::Some */: Comma;
/* 977 */ MultipleImportListOpt /* Option<T>::None */: ;
/* 978 */ MultipleImportItem: Identifier;
/* 979 */ MixinDeclaration: Mixin ScopedIdentifier Semicolon;
/* 980 */ UnsafeBlock: Unsafe LParen Identifier RParen LBrace UnsafeBlockList /* Vec */ RBrace;
/* 981 */ UnsafeBlockList /* Vec<T>::Push */: GenerateGroup UnsafeBlockList;
/* 982 */ UnsafeBlockList /* Vec<T>::New */: ;
/* 983 */ ModuleDeclaration: Module Identifier ModuleDeclarationOpt /* Option */ ModuleDeclarationOpt0 /* Option */ ModuleDeclarationOpt1 /* Option */ ModuleDeclarationOpt2 /* Option */ LBrace ModuleDeclarationList /* Vec */ RBrace;
/* 984 */ ModuleDeclarationList /* Vec<T>::Push */: ModuleGroup ModuleDeclarationList;
/* 985 */ ModuleDeclarationList /* Vec<T>::New */: ;
/* 986 */ ModuleDeclarationOpt2 /* Option<T>::Some */: PortDeclaration;
/* 987 */ ModuleDeclarationOpt2 /* Option<T>::None */: ;
/* 988 */ ModuleDeclarationOpt1 /* Option<T>::Some */: WithParameter;
/* 989 */ ModuleDeclarationOpt1 /* Option<T>::None */: ;
/* 990 */ ModuleDeclarationOpt0 /* Option<T>::Some */: For ScopedIdentifier;
/* 991 */ ModuleDeclarationOpt0 /* Option<T>::None */: ;
/* 992 */ ModuleDeclarationOpt /* Option<T>::Some */: WithGenericParameter;
/* 993 */ ModuleDeclarationOpt /* Option<T>::None */: ;
/* 994 */ ModuleGroup: ModuleGroupList /* Vec */ ModuleGroupGroup;
/* 995 */ ModuleGroupGroup: LBrace ModuleGroupGroupList /* Vec */ RBrace;
/* 996 */ ModuleGroupGroupList /* Vec<T>::Push */: ModuleGroup ModuleGroupGroupList;
/* 997 */ ModuleGroupGroupList /* Vec<T>::New */: ;
/* 998 */ ModuleGroupGroup: ModuleItem;
/* 999 */ ModuleGroupList /* Vec<T>::Push */: Attribute ModuleGroupList;
/* 1000 */ ModuleGroupList /* Vec<T>::New */: ;
/* 1001 */ ModuleItem: GenerateItem;
/* 1002 */ InterfaceDeclaration: Interface Identifier InterfaceDeclarationOpt /* Option */ InterfaceDeclarationOpt0 /* Option */ InterfaceDeclarationOpt1 /* Option */ LBrace InterfaceDeclarationList /* Vec */ RBrace;
/* 1003 */ InterfaceDeclarationList /* Vec<T>::Push */: InterfaceGroup InterfaceDeclarationList;
/* 1004 */ InterfaceDeclarationList /* Vec<T>::New */: ;
/* 1005 */ InterfaceDeclarationOpt1 /* Option<T>::Some */: WithParameter;
/* 1006 */ InterfaceDeclarationOpt1 /* Option<T>::None */: ;
/* 1007 */ InterfaceDeclarationOpt0 /* Option<T>::Some */: For ScopedIdentifier;
/* 1008 */ InterfaceDeclarationOpt0 /* Option<T>::None */: ;
/* 1009 */ InterfaceDeclarationOpt /* Option<T>::Some */: WithGenericParameter;
/* 1010 */ InterfaceDeclarationOpt /* Option<T>::None */: ;
/* 1011 */ InterfaceGroup: InterfaceGroupList /* Vec */ InterfaceGroupGroup;
/* 1012 */ InterfaceGroupGroup: LBrace InterfaceGroupGroupList /* Vec */ RBrace;
/* 1013 */ InterfaceGroupGroupList /* Vec<T>::Push */: InterfaceGroup InterfaceGroupGroupList;
/* 1014 */ InterfaceGroupGroupList /* Vec<T>::New */: ;
/* 1015 */ InterfaceGroupGroup: InterfaceItem;
/* 1016 */ InterfaceGroupList /* Vec<T>::Push */: Attribute InterfaceGroupList;
/* 1017 */ InterfaceGroupList /* Vec<T>::New */: ;
/* 1018 */ InterfaceItem: GenerateItem;
/* 1019 */ InterfaceItem: MixinDeclaration;
/* 1020 */ InterfaceItem: ModportDeclaration;
/* 1021 */ GenerateIfDeclaration: If Expression GenerateNamedBlock GenerateIfDeclarationList /* Vec */ GenerateIfDeclarationOpt /* Option */;
/* 1022 */ GenerateIfDeclarationList /* Vec<T>::Push */: Else If Expression GenerateOptionalNamedBlock GenerateIfDeclarationList;
/* 1023 */ GenerateIfDeclarationList /* Vec<T>::New */: ;
/* 1024 */ GenerateIfDeclarationOpt /* Option<T>::Some */: Else GenerateOptionalNamedBlock;
/* 1025 */ GenerateIfDeclarationOpt /* Option<T>::None */: ;
/* 1026 */ GenerateForDeclaration: For Identifier In GenerateForDeclarationOpt /* Option */ Range GenerateForDeclarationOpt0 /* Option */ GenerateNamedBlock;
/* 1027 */ GenerateForDeclarationOpt0 /* Option<T>::Some */: Step AssignmentOperator Expression;
/* 1028 */ GenerateForDeclarationOpt0 /* Option<T>::None */: ;
/* 1029 */ GenerateForDeclarationOpt /* Option<T>::Some */: Rev;
/* 1030 */ GenerateForDeclarationOpt /* Option<T>::None */: ;
/* 1031 */ GenerateBlockDeclaration: GenerateNamedBlock;
/* 1032 */ GenerateNamedBlock: Colon Identifier LBrace GenerateNamedBlockList /* Vec */ RBrace;
/* 1033 */ GenerateNamedBlockList /* Vec<T>::Push */: GenerateGroup GenerateNamedBlockList;
/* 1034 */ GenerateNamedBlockList /* Vec<T>::New */: ;
/* 1035 */ GenerateOptionalNamedBlock: GenerateOptionalNamedBlockOpt /* Option */ LBrace GenerateOptionalNamedBlockList /* Vec */ RBrace;
/* 1036 */ GenerateOptionalNamedBlockList /* Vec<T>::Push */: GenerateGroup GenerateOptionalNamedBlockList;
/* 1037 */ GenerateOptionalNamedBlockList /* Vec<T>::New */: ;
/* 1038 */ GenerateOptionalNamedBlockOpt /* Option<T>::Some */: Colon Identifier;
/* 1039 */ GenerateOptionalNamedBlockOpt /* Option<T>::None */: ;
/* 1040 */ GenerateGroup: GenerateGroupList /* Vec */ GenerateGroupGroup;
/* 1041 */ GenerateGroupGroup: LBrace GenerateGroupGroupList /* Vec */ RBrace;
/* 1042 */ GenerateGroupGroupList /* Vec<T>::Push */: GenerateGroup GenerateGroupGroupList;
/* 1043 */ GenerateGroupGroupList /* Vec<T>::New */: ;
/* 1044 */ GenerateGroupGroup: GenerateItem;
/* 1045 */ GenerateGroupList /* Vec<T>::Push */: Attribute GenerateGroupList;
/* 1046 */ GenerateGroupList /* Vec<T>::New */: ;
/* 1047 */ GenerateItem: LetDeclaration;
/* 1048 */ GenerateItem: VarDeclaration;
/* 1049 */ GenerateItem: InstDeclaration;
/* 1050 */ GenerateItem: BindDeclaration;
/* 1051 */ GenerateItem: ConstDeclaration;
/* 1052 */ GenerateItem: GenDeclaration;
/* 1053 */ GenerateItem: AlwaysFfDeclaration;
/* 1054 */ GenerateItem: AlwaysCombDeclaration;
/* 1055 */ GenerateItem: AssignDeclaration;
/* 1056 */ GenerateItem: ConnectDeclaration;
/* 1057 */ GenerateItem: FunctionDeclaration;
/* 1058 */ GenerateItem: GenerateIfDeclaration;
/* 1059 */ GenerateItem: GenerateForDeclaration;
/* 1060 */ GenerateItem: GenerateBlockDeclaration;
/* 1061 */ GenerateItem: TypeDefDeclaration;
/* 1062 */ GenerateItem: EnumDeclaration;
/* 1063 */ GenerateItem: StructUnionDeclaration;
/* 1064 */ GenerateItem: ImportDeclaration;
/* 1065 */ GenerateItem: AliasDeclaration;
/* 1066 */ GenerateItem: InitialDeclaration;
/* 1067 */ GenerateItem: FinalDeclaration;
/* 1068 */ GenerateItem: UnsafeBlock;
/* 1069 */ GenerateItem: EmbedDeclaration;
/* 1070 */ PackageDeclaration: Package Identifier PackageDeclarationOpt /* Option */ PackageDeclarationOpt0 /* Option */ LBrace PackageDeclarationList /* Vec */ RBrace;
/* 1071 */ PackageDeclarationList /* Vec<T>::Push */: PackageGroup PackageDeclarationList;
/* 1072 */ PackageDeclarationList /* Vec<T>::New */: ;
/* 1073 */ PackageDeclarationOpt0 /* Option<T>::Some */: For ScopedIdentifier;
/* 1074 */ PackageDeclarationOpt0 /* Option<T>::None */: ;
/* 1075 */ PackageDeclarationOpt /* Option<T>::Some */: WithGenericParameter;
/* 1076 */ PackageDeclarationOpt /* Option<T>::None */: ;
/* 1077 */ PackageGroup: PackageGroupList /* Vec */ PackageGroupGroup;
/* 1078 */ PackageGroupGroup: LBrace PackageGroupGroupList /* Vec */ RBrace;
/* 1079 */ PackageGroupGroupList /* Vec<T>::Push */: PackageGroup PackageGroupGroupList;
/* 1080 */ PackageGroupGroupList /* Vec<T>::New */: ;
/* 1081 */ PackageGroupGroup: PackageItem;
/* 1082 */ PackageGroupList /* Vec<T>::Push */: Attribute PackageGroupList;
/* 1083 */ PackageGroupList /* Vec<T>::New */: ;
/* 1084 */ PackageItem: ConstDeclaration;
/* 1085 */ PackageItem: GenDeclaration;
/* 1086 */ PackageItem: TypeDefDeclaration;
/* 1087 */ PackageItem: EnumDeclaration;
/* 1088 */ PackageItem: StructUnionDeclaration;
/* 1089 */ PackageItem: FunctionDeclaration;
/* 1090 */ PackageItem: ImportDeclaration;
/* 1091 */ PackageItem: AliasDeclaration;
/* 1092 */ PackageItem: EmbedDeclaration;
/* 1093 */ AliasDeclaration: Alias AliasDeclarationGroup Identifier Equ ScopedIdentifier Semicolon;
/* 1094 */ AliasDeclarationGroup: Module;
/* 1095 */ AliasDeclarationGroup: Interface;
/* 1096 */ AliasDeclarationGroup: Package;
/* 1097 */ ProtoDeclaration: Proto ProtoDeclarationGroup;
/* 1098 */ ProtoDeclarationGroup: ProtoModuleDeclaration;
/* 1099 */ ProtoDeclarationGroup: ProtoInterfaceDeclaration;
/* 1100 */ ProtoDeclarationGroup: ProtoPackageDeclaration;
/* 1101 */ ProtoModuleDeclaration: Module Identifier ProtoModuleDeclarationOpt /* Option */ ProtoModuleDeclarationOpt0 /* Option */ Semicolon;
/* 1102 */ ProtoModuleDeclarationOpt0 /* Option<T>::Some */: PortDeclaration;
/* 1103 */ ProtoModuleDeclarationOpt0 /* Option<T>::None */: ;
/* 1104 */ ProtoModuleDeclarationOpt /* Option<T>::Some */: WithParameter;
/* 1105 */ ProtoModuleDeclarationOpt /* Option<T>::None */: ;
/* 1106 */ ProtoInterfaceDeclaration: Interface Identifier ProtoInterfaceDeclarationOpt /* Option */ LBrace ProtoInterfaceDeclarationList /* Vec */ RBrace;
/* 1107 */ ProtoInterfaceDeclarationList /* Vec<T>::Push */: ProtoInterfaceItem ProtoInterfaceDeclarationList;
/* 1108 */ ProtoInterfaceDeclarationList /* Vec<T>::New */: ;
/* 1109 */ ProtoInterfaceDeclarationOpt /* Option<T>::Some */: WithParameter;
/* 1110 */ ProtoInterfaceDeclarationOpt /* Option<T>::None */: ;
/* 1111 */ ProtoInterfaceItem: VarDeclaration;
/* 1112 */ ProtoInterfaceItem: ProtoConstDeclaration;
/* 1113 */ ProtoInterfaceItem: ProtoFunctionDeclaration;
/* 1114 */ ProtoInterfaceItem: ProtoTypeDefDeclaration;
/* 1115 */ ProtoInterfaceItem: ProtoAliasDeclaration;
/* 1116 */ ProtoInterfaceItem: ModportDeclaration;
/* 1117 */ ProtoInterfaceItem: ImportDeclaration;
/* 1118 */ ProtoPackageDeclaration: Package Identifier LBrace ProtoPackageDeclarationList /* Vec */ RBrace;
/* 1119 */ ProtoPackageDeclarationList /* Vec<T>::Push */: ProtoPacakgeItem ProtoPackageDeclarationList;
/* 1120 */ ProtoPackageDeclarationList /* Vec<T>::New */: ;
/* 1121 */ ProtoPacakgeItem: ProtoConstDeclaration;
/* 1122 */ ProtoPacakgeItem: ProtoTypeDefDeclaration;
/* 1123 */ ProtoPacakgeItem: EnumDeclaration;
/* 1124 */ ProtoPacakgeItem: StructUnionDeclaration;
/* 1125 */ ProtoPacakgeItem: ProtoFunctionDeclaration;
/* 1126 */ ProtoPacakgeItem: ProtoAliasDeclaration;
/* 1127 */ ProtoPacakgeItem: ImportDeclaration;
/* 1128 */ ProtoConstDeclaration: Const Identifier Colon ProtoConstDeclarationGroup Semicolon;
/* 1129 */ ProtoConstDeclarationGroup: ArrayType;
/* 1130 */ ProtoConstDeclarationGroup: Type;
/* 1131 */ ProtoTypeDefDeclaration: Type Identifier ProtoTypeDefDeclarationOpt /* Option */ Semicolon;
/* 1132 */ ProtoTypeDefDeclarationOpt /* Option<T>::Some */: Equ ArrayType;
/* 1133 */ ProtoTypeDefDeclarationOpt /* Option<T>::None */: ;
/* 1134 */ ProtoFunctionDeclaration: Function Identifier ProtoFunctionDeclarationOpt /* Option */ ProtoFunctionDeclarationOpt0 /* Option */ ProtoFunctionDeclarationOpt1 /* Option */ Semicolon;
/* 1135 */ ProtoFunctionDeclarationOpt1 /* Option<T>::Some */: MinusGT ScalarType;
/* 1136 */ ProtoFunctionDeclarationOpt1 /* Option<T>::None */: ;
/* 1137 */ ProtoFunctionDeclarationOpt0 /* Option<T>::Some */: PortDeclaration;
/* 1138 */ ProtoFunctionDeclarationOpt0 /* Option<T>::None */: ;
/* 1139 */ ProtoFunctionDeclarationOpt /* Option<T>::Some */: WithGenericParameter;
/* 1140 */ ProtoFunctionDeclarationOpt /* Option<T>::None */: ;
/* 1141 */ ProtoAliasDeclaration: Alias ProtoAliasDeclarationGroup Identifier Colon ScopedIdentifier Semicolon;
/* 1142 */ ProtoAliasDeclarationGroup: Module;
/* 1143 */ ProtoAliasDeclarationGroup: Interface;
/* 1144 */ ProtoAliasDeclarationGroup: Package;
/* 1145 */ EmbedDeclaration: Embed LParen Identifier RParen Identifier EmbedContent;
/* 1146 */ EmbedContent: TripleLBrace EmbedContentList /* Vec */ TripleRBrace;
/* 1147 */ EmbedContentList /* Vec<T>::Push */: EmbedItem EmbedContentList;
/* 1148 */ EmbedContentList /* Vec<T>::New */: ;
/* 1149 */ EmbedScopedIdentifier: EscapedLBrace ScopedIdentifier EscapedRBrace;
/* 1150 */ EmbedItem: EmbedLBrace EmbedItemList /* Vec */ EmbedRBrace;
/* 1151 */ EmbedItemList /* Vec<T>::Push */: EmbedItem EmbedItemList;
/* 1152 */ EmbedItemList /* Vec<T>::New */: ;
/* 1153 */ EmbedItem: EmbedScopedIdentifier;
/* 1154 */ EmbedItem: Any;
/* 1155 */ IncludeDeclaration: Include LParen Identifier Comma StringLiteral RParen Semicolon;
/* 1156 */ DescriptionGroup: DescriptionGroupList /* Vec */ DescriptionGroupGroup;
/* 1157 */ DescriptionGroupGroup: LBrace DescriptionGroupGroupList /* Vec */ RBrace;
/* 1158 */ DescriptionGroupGroupList /* Vec<T>::Push */: DescriptionGroup DescriptionGroupGroupList;
/* 1159 */ DescriptionGroupGroupList /* Vec<T>::New */: ;
/* 1160 */ DescriptionGroupGroup: DescriptionItem;
/* 1161 */ DescriptionGroupList /* Vec<T>::Push */: Attribute DescriptionGroupList;
/* 1162 */ DescriptionGroupList /* Vec<T>::New */: ;
/* 1163 */ DescriptionItem: DescriptionItemOpt /* Option */ PublicDescriptionItem;
/* 1164 */ DescriptionItem: ImportDeclaration;
/* 1165 */ DescriptionItem: BindDeclaration;
/* 1166 */ DescriptionItem: EmbedDeclaration;
/* 1167 */ DescriptionItem: IncludeDeclaration;
/* 1168 */ DescriptionItemOpt /* Option<T>::Some */: Pub;
/* 1169 */ DescriptionItemOpt /* Option<T>::None */: ;
/* 1170 */ PublicDescriptionItem: ModuleDeclaration;
/* 1171 */ PublicDescriptionItem: InterfaceDeclaration;
/* 1172 */ PublicDescriptionItem: PackageDeclaration;
/* 1173 */ PublicDescriptionItem: AliasDeclaration;
/* 1174 */ PublicDescriptionItem: ProtoDeclaration;
/* 1175 */ PublicDescriptionItem: FunctionDeclaration;
/* 1176 */ Veryl: Start VerylList /* Vec */;
/* 1177 */ VerylList /* Vec<T>::Push */: DescriptionGroup VerylList;
/* 1178 */ VerylList /* Vec<T>::New */: ;