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