From 4604d6277adc2bf2a426347d269036fda82555c6 Mon Sep 17 00:00:00 2001 From: Samuel Thomas Date: Fri, 5 Jul 2024 09:40:05 -0500 Subject: [PATCH] Improve LSP error reporting (#1950) - [x] Actually run papercut, well-formed, and synthesis-papercut passes - [x] support multiple errors in a single file - [x] figure out what to do about primitive files that have no main component - [x] Report parsing errors at reported location - [x] handle errors that don't report location - [x] add infrastructure for reporting warnings --- Cargo.lock | 1 + calyx-frontend/src/ast.rs | 6 +- calyx-frontend/src/parser.rs | 56 +- calyx-frontend/src/workspace.rs | 31 +- calyx-ir/src/from_ast.rs | 12 +- calyx-lsp/Cargo.toml | 1 + calyx-lsp/src/diagnostic.rs | 125 +- calyx-lsp/src/document.rs | 23 +- calyx-lsp/src/log.rs | 6 +- calyx-lsp/src/main.rs | 22 +- calyx-lsp/tree-sitter-calyx/.gitignore | 1 + calyx-lsp/tree-sitter-calyx/grammar.js | 6 +- calyx-lsp/tree-sitter-calyx/src/parser.c | 8698 +++++++++-------- calyx-opt/src/default_passes.rs | 10 +- calyx-opt/src/pass_manager.rs | 65 +- calyx-opt/src/passes/papercut.rs | 52 +- calyx-opt/src/passes/synthesis_papercut.rs | 61 +- calyx-opt/src/passes/well_formed.rs | 276 +- calyx-opt/src/traversal/diagnostics.rs | 76 + calyx-opt/src/traversal/mod.rs | 2 + calyx-utils/src/errors.rs | 112 +- calyx-utils/src/lib.rs | 4 +- calyx-utils/src/pos_string.rs | 60 + calyx-utils/src/position.rs | 28 +- interp/src/errors.rs | 12 +- src/main.rs | 7 +- tests/errors/comb-component-groups.expect | 4 + tests/errors/comb-port-in-condition.expect | 2 +- tests/errors/comb-static-comp.expect | 10 +- tests/errors/group-comb-conflict.expect | 12 +- .../errors/group-cont-assign-conflict.expect | 12 +- tests/errors/if-cond-conflict.expect | 20 +- tests/errors/mem-only-reads.expect | 4 +- tests/errors/multiple-attr-vals.expect | 10 +- tests/errors/obvious-conflict.expect | 8 +- tests/errors/orphan-done.expect | 8 +- tests/errors/papercut/multi-done.expect | 4 +- .../errors/papercut/no-control-no-done.expect | 4 +- tests/errors/parser/cell-missing-semi.expect | 11 +- tests/errors/parser/invalid-width.expect | 10 +- tests/errors/parser/invalid-width2.expect | 10 +- tests/errors/parser/invalid-width3.expect | 10 +- tests/errors/parser/invalid-width4.expect | 10 +- .../errors/parser/num-without-bitwidth.expect | 10 +- tests/errors/parser/sig-missing-comma.expect | 10 +- tests/errors/parser/wrong-binary-num.expect | 10 +- tests/errors/redefine-external.expect | 4 +- tests/errors/while-unstable.expect | 4 +- web/rust/src/lib.rs | 4 +- 49 files changed, 5288 insertions(+), 4656 deletions(-) create mode 100644 calyx-opt/src/traversal/diagnostics.rs create mode 100644 calyx-utils/src/pos_string.rs diff --git a/Cargo.lock b/Cargo.lock index 1b11b295d6..17ad1c25a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -446,6 +446,7 @@ version = "0.7.1" dependencies = [ "calyx-frontend", "calyx-ir", + "calyx-opt", "calyx-utils", "cc", "chrono", diff --git a/calyx-frontend/src/ast.rs b/calyx-frontend/src/ast.rs index 8217da4094..728eae414a 100644 --- a/calyx-frontend/src/ast.rs +++ b/calyx-frontend/src/ast.rs @@ -2,18 +2,18 @@ use super::parser; use crate::{Attributes, PortDef, Primitive}; use atty::Stream; -use calyx_utils::{CalyxResult, Error, GPosIdx, Id}; +use calyx_utils::{CalyxResult, Error, GPosIdx, Id, PosString}; use std::{num::NonZeroU64, path::PathBuf}; /// Corresponds to an individual Calyx file. #[derive(Debug)] pub struct NamespaceDef { /// Path to extern files. - pub imports: Vec, + pub imports: Vec, /// List of component definitions. pub components: Vec, /// Extern statements and any primitive declarations in them. - pub externs: Vec<(Option, Vec)>, + pub externs: Vec<(Option, Vec)>, /// Optional opaque metadata pub metadata: Option, } diff --git a/calyx-frontend/src/parser.rs b/calyx-frontend/src/parser.rs index 63d680d714..4de02c1148 100644 --- a/calyx-frontend/src/parser.rs +++ b/calyx-frontend/src/parser.rs @@ -6,7 +6,7 @@ use super::ast::{ }; use super::Attributes; use crate::{Attribute, Direction, PortDef, Primitive, Width}; -use calyx_utils::{self, CalyxResult, Id}; +use calyx_utils::{self, CalyxResult, Id, PosString}; use calyx_utils::{FileIdx, GPosIdx, GlobalPositionTable}; use pest::pratt_parser::{Assoc, Op, PrattParser}; use pest_consume::{match_nodes, Error, Parser}; @@ -66,25 +66,16 @@ impl CalyxParser { CalyxParser::parse_with_userdata(Rule::file, content, user_data) .map_err(|e| e.with_path(&path.to_string_lossy())) .map_err(|e| { - calyx_utils::Error::misc(format!( - "Failed to parse `{}`: {err}", - path.to_string_lossy(), - err = e - )) + calyx_utils::Error::parse_error(e.variant.message()) + .with_pos(&Self::error_span(&e, file)) })?; let input = inputs.single().map_err(|e| { - calyx_utils::Error::misc(format!( - "Failed to parse `{}`: {err}", - path.to_string_lossy(), - err = e - )) + calyx_utils::Error::parse_error(e.variant.message()) + .with_pos(&Self::error_span(&e, file)) })?; let out = CalyxParser::file(input).map_err(|e| { - calyx_utils::Error::misc(format!( - "Failed to parse `{}`: {err}", - path.to_string_lossy(), - err = e - )) + calyx_utils::Error::parse_error(e.variant.message()) + .with_pos(&Self::error_span(&e, file)) })?; log::info!( "Parsed `{}` in {}ms", @@ -110,15 +101,16 @@ impl CalyxParser { let inputs = CalyxParser::parse_with_userdata(Rule::file, contents, user_data) .map_err(|e| { - calyx_utils::Error::misc( - format!("Failed to parse buffer: {e}",), - ) + calyx_utils::Error::parse_error(e.variant.message()) + .with_pos(&Self::error_span(&e, file)) })?; let input = inputs.single().map_err(|e| { - calyx_utils::Error::misc(format!("Failed to parse buffer: {e}",)) + calyx_utils::Error::parse_error(e.variant.message()) + .with_pos(&Self::error_span(&e, file)) })?; let out = CalyxParser::file(input).map_err(|e| { - calyx_utils::Error::misc(format!("Failed to parse buffer: {e}",)) + calyx_utils::Error::parse_error(e.variant.message()) + .with_pos(&Self::error_span(&e, file)) })?; Ok(out) } @@ -134,6 +126,15 @@ impl CalyxParser { GPosIdx(pos) } + fn error_span(error: &pest::error::Error, file: FileIdx) -> GPosIdx { + let (start, end) = match error.location { + pest::error::InputLocation::Pos(off) => (off, off + 1), + pest::error::InputLocation::Span((start, end)) => (start, end), + }; + let pos = GlobalPositionTable::as_mut().add_pos(file, start, end); + GPosIdx(pos) + } + #[allow(clippy::result_large_err)] fn guard_expr_helper( ud: UserData, @@ -188,7 +189,7 @@ impl CalyxParser { #[allow(clippy::large_enum_variant)] enum ExtOrComp { - Ext((Option, Vec)), + Ext((Option, Vec)), Comp(ComponentDef), PrimInline(Primitive), } @@ -350,10 +351,11 @@ impl CalyxParser { Ok(input.as_str()) } - fn string_lit(input: Node) -> ParseResult { + fn string_lit(input: Node) -> ParseResult { + let span = Self::get_span(&input); Ok(match_nodes!( input.into_children(); - [char(c)..] => c.collect::>().join("") + [char(c)..] => PosString::new(c.collect::>().join(""), span) )) } @@ -361,7 +363,7 @@ impl CalyxParser { fn attribute(input: Node) -> ParseResult<(Attribute, u64)> { match_nodes!( input.clone().into_children(); - [string_lit(key), bitwidth(num)] => Attribute::from_str(&key).map(|attr| (attr, num)).map_err(|e| input.error(format!("{:?}", e))) + [string_lit(key), bitwidth(num)] => Attribute::from_str(key.as_ref()).map(|attr| (attr, num)).map_err(|e| input.error(format!("{:?}", e))) ) } fn attributes(input: Node) -> ParseResult { @@ -1199,14 +1201,14 @@ impl CalyxParser { ) } - fn imports(input: Node) -> ParseResult> { + fn imports(input: Node) -> ParseResult> { Ok(match_nodes!( input.into_children(); [string_lit(path)..] => path.collect() )) } - fn ext(input: Node) -> ParseResult<(Option, Vec)> { + fn ext(input: Node) -> ParseResult<(Option, Vec)> { Ok(match_nodes!( input.into_children(); [string_lit(file), primitive(prims)..] => (Some(file), prims.collect()) diff --git a/calyx-frontend/src/workspace.rs b/calyx-frontend/src/workspace.rs index d6ffaca3f3..167f945d4c 100644 --- a/calyx-frontend/src/workspace.rs +++ b/calyx-frontend/src/workspace.rs @@ -3,7 +3,7 @@ use super::{ parser, }; use crate::LibrarySignatures; -use calyx_utils::{CalyxResult, Error}; +use calyx_utils::{CalyxResult, Error, WithPos}; use std::{ collections::HashSet, path::{Path, PathBuf}, @@ -65,7 +65,7 @@ impl Workspace { lib_path: &Path, ) -> CalyxResult where - S: AsRef + Clone, + S: AsRef + Clone + WithPos, { let absolute_import = import.as_ref(); if absolute_import.is_absolute() && absolute_import.exists() { @@ -87,7 +87,7 @@ impl Workspace { import.as_ref().to_string_lossy(), parent.to_string_lossy(), lib_path.to_string_lossy() - ))) + )).with_pos(&import)) } // Get the absolute path to an extern. Extern can only exist on paths @@ -98,17 +98,19 @@ impl Workspace { parent: &Path, ) -> CalyxResult where - S: AsRef + Clone, + S: AsRef + Clone + WithPos, { - let parent_path = parent.join(extern_path.clone()).canonicalize()?; - if parent_path.exists() { - return Ok(parent_path); - } - Err(Error::invalid_file(format!( - "Extern path `{}` not found in parent directory ({})", - extern_path.as_ref().to_string_lossy(), - parent.to_string_lossy(), - ))) + parent + .join(extern_path.clone()) + .canonicalize() + .map_err(|_| { + Error::invalid_file(format!( + "Extern path `{}` not found in parent directory ({})", + extern_path.as_ref().to_string_lossy(), + parent.to_string_lossy(), + )) + .with_pos(&extern_path) + }) } /// Construct a new workspace using the `compile.futil` library which @@ -273,7 +275,8 @@ impl Workspace { })?; // Add original imports to workspace - ws.original_imports = ns.imports.clone(); + ws.original_imports = + ns.imports.iter().map(|imp| imp.to_string()).collect(); // TODO (griffin): Probably not a great idea to clone the metadata // string but it works for now diff --git a/calyx-ir/src/from_ast.rs b/calyx-ir/src/from_ast.rs index ee65c32919..cf912388b7 100644 --- a/calyx-ir/src/from_ast.rs +++ b/calyx-ir/src/from_ast.rs @@ -182,16 +182,20 @@ pub fn ast_to_ir(mut workspace: Workspace) -> CalyxResult { let mut all_names: HashSet<&Id> = HashSet::with_capacity(workspace.components.len() + prims.len()); - let prim_names = prims.iter().map(|p| &p.name); + let prim_names = prims.iter().map(|p| (&p.name, p.attributes.copy_span())); - let comp_names = workspace.components.iter().map(|comp| &comp.name); + let comp_names = workspace + .components + .iter() + .map(|comp| (&comp.name, comp.attributes.copy_span())); - for bound in prim_names.chain(comp_names) { + for (bound, span) in prim_names.chain(comp_names) { if all_names.contains(bound) { return Err(Error::already_bound( *bound, "component or primitive".to_string(), - )); + ) + .with_pos(&span)); } all_names.insert(bound); } diff --git a/calyx-lsp/Cargo.toml b/calyx-lsp/Cargo.toml index 6ff0731f69..7747dae274 100644 --- a/calyx-lsp/Cargo.toml +++ b/calyx-lsp/Cargo.toml @@ -27,6 +27,7 @@ default = ["diagnostics"] calyx-frontend.workspace = true calyx-ir.workspace = true calyx-utils.workspace = true +calyx-opt.workspace = true chrono = "0.4.33" itertools.workspace = true regex = "1.10.3" diff --git a/calyx-lsp/src/diagnostic.rs b/calyx-lsp/src/diagnostic.rs index 311cd16829..ee75cfeaf8 100644 --- a/calyx-lsp/src/diagnostic.rs +++ b/calyx-lsp/src/diagnostic.rs @@ -1,7 +1,14 @@ use std::path::Path; +use tower_lsp::lsp_types::{self as lspt}; +use calyx_opt::{ + passes::{Papercut, SynthesisPapercut, WellFormed}, + traversal::{ConstructVisitor, DiagnosticPass, Visitor}, +}; use resolve_path::PathResolveExt; +use crate::document::Document; + pub struct Diagnostic; /// A Calyx error message @@ -12,18 +19,69 @@ pub struct CalyxError { pub pos_start: usize, pub pos_end: usize, pub msg: String, + pub annotations: Vec<(String, usize, usize)>, + severity: lspt::DiagnosticSeverity, } impl Diagnostic { /// Run the `calyx` compiler on `path` with libraries at `lib_path` pub fn did_save(path: &Path, lib_path: &Path) -> Vec { - calyx_frontend::Workspace::construct( + calyx_frontend::Workspace::construct_shallow( &Some(path.to_path_buf()), lib_path.resolve().as_ref(), ) .and_then(calyx_ir::from_ast::ast_to_ir) - // TODO: call well-formed pass - .map(|_| vec![]) + .and_then(|mut ctx| { + let mut wellformed = ::from(&ctx)?; + wellformed.do_pass(&mut ctx)?; + + let mut diag_papercut = ::from(&ctx)?; + diag_papercut.do_pass(&mut ctx)?; + + let mut synth_papercut = + ::from(&ctx)?; + synth_papercut.do_pass(&mut ctx)?; + + let warnings = wellformed + .diagnostics() + .warning_iter() + .chain(diag_papercut.diagnostics().warning_iter()) + .chain(synth_papercut.diagnostics().warning_iter()) + .map(|e| { + let (file_name, pos_start, pos_end) = e.location(); + let msg = e.message(); + let annotations = e.annotations(); + CalyxError { + file_name: file_name.to_string(), + pos_start, + pos_end, + msg, + annotations, + severity: lspt::DiagnosticSeverity::WARNING, + } + }); + + Ok(wellformed + .diagnostics() + .errors_iter() + .chain(diag_papercut.diagnostics().errors_iter()) + .chain(synth_papercut.diagnostics().errors_iter()) + .map(|e| { + let (file_name, pos_start, pos_end) = e.location(); + let msg = e.message(); + let annotations = e.annotations(); + CalyxError { + file_name: file_name.to_string(), + pos_start, + pos_end, + msg, + annotations, + severity: lspt::DiagnosticSeverity::ERROR, + } + }) + .chain(warnings) + .collect::>()) + }) .unwrap_or_else(|e| { let (file_name, pos_start, pos_end) = e.location(); let msg = e.message(); @@ -32,7 +90,68 @@ impl Diagnostic { pos_start, pos_end, msg, + annotations: vec![], + severity: lspt::DiagnosticSeverity::ERROR, }] }) } } + +impl CalyxError { + pub fn into_lspt_diagnostics( + self, + doc: &Document, + ) -> Vec { + // convert annotations into related information + // this however doesn't actually highlight the locations. + // instead is just shows up in the error tooltop in VSCode. + let related_information = self + .annotations + .iter() + .filter_map(|(msg, start, end)| { + doc.bytes_to_range(*start, *end).map(|range| { + lspt::DiagnosticRelatedInformation { + location: lspt::Location::new( + doc.url.clone(), + range.into(), + ), + message: msg.to_string(), + } + }) + }) + .collect(); + + // also translate annotations into diagnostics + let annotation_diagnostics = + self.annotations.iter().filter_map(|(msg, start, end)| { + doc.bytes_to_range(*start, *end) + .map(|range| lspt::Diagnostic { + range: range.into(), + severity: Some(lspt::DiagnosticSeverity::INFORMATION), + code: None, + code_description: None, + source: Some("calyx-lsp".to_string()), + message: msg.to_string(), + related_information: None, + tags: None, + data: None, + }) + }); + + doc.bytes_to_range(self.pos_start, self.pos_end) + .map(|range| lspt::Diagnostic { + range: range.into(), + severity: Some(self.severity), + code: None, + code_description: None, + source: Some("calyx-lsp".to_string()), + message: self.msg, + related_information: Some(related_information), + tags: None, + data: None, + }) + .into_iter() + .chain(annotation_diagnostics) + .collect() + } +} diff --git a/calyx-lsp/src/document.rs b/calyx-lsp/src/document.rs index 1a1595e938..58d94d5f94 100644 --- a/calyx-lsp/src/document.rs +++ b/calyx-lsp/src/document.rs @@ -66,12 +66,12 @@ pub enum Context { Control, } -/// Transform an iterator of `treesit::Node` to `Range`. -pub trait NodeRangesIter<'a>: Iterator> + Sized { - fn ranges(self) -> impl Iterator { - self.map(Range::from) - } -} +// /// Transform an iterator of `treesit::Node` to `Range`. +// pub trait NodeRangesIter<'a>: Iterator> + Sized { +// fn ranges(self) -> impl Iterator { +// self.map(Range::from) +// } +// } impl Document { /// Create an empty document for `url`. @@ -126,6 +126,17 @@ impl Document { } } + pub fn bytes_to_range( + &self, + start_offset: usize, + end_offset: usize, + ) -> Option { + self.byte_to_point(start_offset).and_then(|start| { + self.byte_to_point(end_offset) + .map(|end| Range::new(start, end)) + }) + } + /// Compile `pattern` into a treesit query, run the query, /// and return a map of capture names to captured nodes. pub fn captures<'a, 'node: 'a>( diff --git a/calyx-lsp/src/log.rs b/calyx-lsp/src/log.rs index d801322d4b..aca1628529 100644 --- a/calyx-lsp/src/log.rs +++ b/calyx-lsp/src/log.rs @@ -16,7 +16,7 @@ impl Debug { let mut file = OpenOptions::new() .create(true) .append(true) - .open(format!("/tmp/calyx-lsp-debug.log")) + .open("/tmp/calyx-lsp-debug.log") .unwrap(); writeln!(file, "{}", msg.as_ref()).expect("Unable to write file"); } @@ -33,7 +33,7 @@ impl Debug { .create(true) .write(true) .truncate(true) - .open(format!("/tmp/calyx-lsp-debug.log")) + .open("/tmp/calyx-lsp-debug.log") .unwrap(); writeln!(file, "{} {}", msg.as_ref(), Local::now().to_rfc2822()) .expect("Unable to write file"); @@ -60,7 +60,7 @@ impl Debug { macro_rules! stdout { ($($t:tt)*) => {{ - log::Debug::stdout(format!($($t)*)) + crate::Debug::stdout(format!($($t)*)) }}; } diff --git a/calyx-lsp/src/main.rs b/calyx-lsp/src/main.rs index 5171e66a9f..feb33d7493 100644 --- a/calyx-lsp/src/main.rs +++ b/calyx-lsp/src/main.rs @@ -12,7 +12,7 @@ use std::fs; use std::path::PathBuf; use std::sync::RwLock; -use convert::{Point, Range}; +use convert::Point; use diagnostic::Diagnostic; use document::Document; use goto_definition::DefinitionProvider; @@ -127,7 +127,6 @@ impl Backend { /// Publish diagnostics for document `url`. async fn publish_diagnostics(&self, url: &lspt::Url) { - // TODO: factor the bulk of this method somewhere else let lib_path: PathBuf = self.config.read().unwrap().calyx_lsp.library_paths[0] .to_string() @@ -140,24 +139,7 @@ impl Backend { &lib_path, ) .into_iter() - .filter_map(|diag| { - doc.byte_to_point(diag.pos_start).and_then(|s| { - doc.byte_to_point(diag.pos_end) - .map(|e| (Range::new(s, e), diag.msg)) - }) - }) - .map(|(range, message)| lspt::Diagnostic { - range: range.into(), - severity: Some(lspt::DiagnosticSeverity::ERROR), - code: None, - code_description: None, - source: Some("calyx".to_string()), - message, - related_information: None, - tags: None, - data: None, - }) - .inspect(|diag| log::stdout!("{diag:#?}")) + .flat_map(|diag| diag.into_lspt_diagnostics(doc)) .collect(), ) }) diff --git a/calyx-lsp/tree-sitter-calyx/.gitignore b/calyx-lsp/tree-sitter-calyx/.gitignore index 9f46b86ff5..1776b0c869 100644 --- a/calyx-lsp/tree-sitter-calyx/.gitignore +++ b/calyx-lsp/tree-sitter-calyx/.gitignore @@ -1,3 +1,4 @@ /build/ /node_modules/ /package-lock.json +/Cargo.toml diff --git a/calyx-lsp/tree-sitter-calyx/grammar.js b/calyx-lsp/tree-sitter-calyx/grammar.js index 27e547bbdd..38cf50775a 100644 --- a/calyx-lsp/tree-sitter-calyx/grammar.js +++ b/calyx-lsp/tree-sitter-calyx/grammar.js @@ -73,7 +73,7 @@ module.exports = grammar({ wires: $ => seq('wires', '{', optional($.wires_inner), '}'), wires_inner: $ => repeat1(choice($.group, $.wire_assignment)), group: $ => seq( - optional('comb'), 'group', $.ident, optional($.attributes), + optional(choice('comb', $.static_annotation)), 'group', $.ident, optional($.attributes), '{', repeat($.wire_assignment), '}' @@ -105,8 +105,8 @@ module.exports = grammar({ wire_assignment: $ => seq(optional($.at_attribute), $.lhs, '=', choice($.switch, $.expr), ';'), // control - control: $ => seq('control', '{', $.control_inner, '}'), - control_inner: $ => $.stmt, + control: $ => seq('control', '{', optional($.control_inner), '}'), + control_inner: $ => repeat1($.stmt), enable: $ => seq(repeat($.at_attribute), optional($.ident), ';'), invoke_ref_arg: $ => seq($.ident, '=', $.ident), invoke_ref_args: $ => seq( diff --git a/calyx-lsp/tree-sitter-calyx/src/parser.c b/calyx-lsp/tree-sitter-calyx/src/parser.c index 3dad8e505e..29a46b804a 100644 --- a/calyx-lsp/tree-sitter-calyx/src/parser.c +++ b/calyx-lsp/tree-sitter-calyx/src/parser.c @@ -6,7 +6,7 @@ #endif #define LANGUAGE_VERSION 14 -#define STATE_COUNT 462 +#define STATE_COUNT 463 #define LARGE_STATE_COUNT 2 #define SYMBOL_COUNT 126 #define ALIAS_COUNT 0 @@ -138,9 +138,9 @@ enum { aux_sym_arg_list_repeat1 = 119, aux_sym_wires_inner_repeat1 = 120, aux_sym_group_repeat1 = 121, - aux_sym_invoke_ref_args_repeat1 = 122, - aux_sym_invoke_args_repeat1 = 123, - aux_sym_seq_repeat1 = 124, + aux_sym_control_inner_repeat1 = 122, + aux_sym_invoke_ref_args_repeat1 = 123, + aux_sym_invoke_args_repeat1 = 124, aux_sym_attributes_repeat1 = 125, }; @@ -267,9 +267,9 @@ static const char * const ts_symbol_names[] = { [aux_sym_arg_list_repeat1] = "arg_list_repeat1", [aux_sym_wires_inner_repeat1] = "wires_inner_repeat1", [aux_sym_group_repeat1] = "group_repeat1", + [aux_sym_control_inner_repeat1] = "control_inner_repeat1", [aux_sym_invoke_ref_args_repeat1] = "invoke_ref_args_repeat1", [aux_sym_invoke_args_repeat1] = "invoke_args_repeat1", - [aux_sym_seq_repeat1] = "seq_repeat1", [aux_sym_attributes_repeat1] = "attributes_repeat1", }; @@ -396,9 +396,9 @@ static const TSSymbol ts_symbol_map[] = { [aux_sym_arg_list_repeat1] = aux_sym_arg_list_repeat1, [aux_sym_wires_inner_repeat1] = aux_sym_wires_inner_repeat1, [aux_sym_group_repeat1] = aux_sym_group_repeat1, + [aux_sym_control_inner_repeat1] = aux_sym_control_inner_repeat1, [aux_sym_invoke_ref_args_repeat1] = aux_sym_invoke_ref_args_repeat1, [aux_sym_invoke_args_repeat1] = aux_sym_invoke_args_repeat1, - [aux_sym_seq_repeat1] = aux_sym_seq_repeat1, [aux_sym_attributes_repeat1] = aux_sym_attributes_repeat1, }; @@ -891,15 +891,15 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = false, .named = false, }, - [aux_sym_invoke_ref_args_repeat1] = { + [aux_sym_control_inner_repeat1] = { .visible = false, .named = false, }, - [aux_sym_invoke_args_repeat1] = { + [aux_sym_invoke_ref_args_repeat1] = { .visible = false, .named = false, }, - [aux_sym_seq_repeat1] = { + [aux_sym_invoke_args_repeat1] = { .visible = false, .named = false, }, @@ -935,37 +935,37 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [14] = 14, [15] = 15, [16] = 16, - [17] = 16, - [18] = 16, - [19] = 19, + [17] = 17, + [18] = 17, + [19] = 17, [20] = 20, [21] = 21, [22] = 22, [23] = 23, [24] = 24, [25] = 25, - [26] = 25, + [26] = 26, [27] = 27, [28] = 28, [29] = 29, - [30] = 30, + [30] = 28, [31] = 31, [32] = 32, - [33] = 31, + [33] = 33, [34] = 34, - [35] = 35, - [36] = 29, + [35] = 33, + [36] = 36, [37] = 37, [38] = 38, [39] = 39, - [40] = 40, + [40] = 31, [41] = 41, [42] = 42, [43] = 43, [44] = 44, [45] = 45, [46] = 46, - [47] = 37, + [47] = 47, [48] = 48, [49] = 49, [50] = 50, @@ -980,7 +980,7 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [59] = 59, [60] = 60, [61] = 61, - [62] = 62, + [62] = 37, [63] = 63, [64] = 64, [65] = 65, @@ -1002,7 +1002,7 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [81] = 80, [82] = 82, [83] = 83, - [84] = 82, + [84] = 83, [85] = 85, [86] = 86, [87] = 87, @@ -1015,19 +1015,19 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [94] = 94, [95] = 95, [96] = 96, - [97] = 95, + [97] = 97, [98] = 98, - [99] = 88, + [99] = 92, [100] = 100, - [101] = 98, + [101] = 101, [102] = 102, [103] = 103, [104] = 104, [105] = 105, [106] = 106, [107] = 107, - [108] = 108, - [109] = 109, + [108] = 106, + [109] = 87, [110] = 110, [111] = 111, [112] = 112, @@ -1054,8 +1054,8 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [133] = 133, [134] = 134, [135] = 135, - [136] = 126, - [137] = 137, + [136] = 136, + [137] = 129, [138] = 138, [139] = 139, [140] = 140, @@ -1066,13 +1066,13 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [145] = 145, [146] = 146, [147] = 147, - [148] = 128, - [149] = 149, + [148] = 148, + [149] = 145, [150] = 150, - [151] = 149, + [151] = 151, [152] = 152, [153] = 153, - [154] = 154, + [154] = 153, [155] = 155, [156] = 156, [157] = 157, @@ -1085,8 +1085,8 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [164] = 164, [165] = 165, [166] = 166, - [167] = 28, - [168] = 168, + [167] = 167, + [168] = 41, [169] = 169, [170] = 170, [171] = 171, @@ -1099,7 +1099,7 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [178] = 178, [179] = 179, [180] = 180, - [181] = 28, + [181] = 181, [182] = 182, [183] = 183, [184] = 184, @@ -1107,18 +1107,18 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [186] = 186, [187] = 187, [188] = 188, - [189] = 185, + [189] = 179, [190] = 190, - [191] = 191, - [192] = 192, - [193] = 41, + [191] = 59, + [192] = 41, + [193] = 193, [194] = 194, [195] = 195, - [196] = 194, - [197] = 192, + [196] = 196, + [197] = 197, [198] = 198, - [199] = 199, - [200] = 41, + [199] = 182, + [200] = 183, [201] = 201, [202] = 202, [203] = 203, @@ -1130,17 +1130,17 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [209] = 209, [210] = 210, [211] = 211, - [212] = 212, + [212] = 86, [213] = 213, - [214] = 214, + [214] = 151, [215] = 215, - [216] = 85, + [216] = 216, [217] = 217, - [218] = 218, + [218] = 156, [219] = 219, [220] = 220, [221] = 221, - [222] = 206, + [222] = 222, [223] = 223, [224] = 224, [225] = 225, @@ -1151,30 +1151,30 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [230] = 230, [231] = 231, [232] = 232, - [233] = 233, + [233] = 59, [234] = 234, [235] = 235, [236] = 236, [237] = 237, [238] = 238, - [239] = 239, - [240] = 41, + [239] = 85, + [240] = 211, [241] = 241, - [242] = 215, - [243] = 171, - [244] = 154, + [242] = 242, + [243] = 243, + [244] = 231, [245] = 245, - [246] = 79, + [246] = 246, [247] = 247, - [248] = 207, - [249] = 249, - [250] = 250, + [248] = 248, + [249] = 210, + [250] = 223, [251] = 251, [252] = 252, [253] = 253, - [254] = 202, - [255] = 205, - [256] = 256, + [254] = 254, + [255] = 219, + [256] = 59, [257] = 257, [258] = 258, [259] = 259, @@ -1184,9 +1184,9 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [263] = 263, [264] = 264, [265] = 265, - [266] = 263, + [266] = 266, [267] = 267, - [268] = 32, + [268] = 264, [269] = 267, [270] = 270, [271] = 271, @@ -1194,28 +1194,28 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [273] = 265, [274] = 274, [275] = 275, - [276] = 276, - [277] = 79, + [276] = 37, + [277] = 38, [278] = 278, [279] = 279, [280] = 280, - [281] = 281, - [282] = 282, - [283] = 85, - [284] = 284, + [281] = 86, + [282] = 32, + [283] = 34, + [284] = 85, [285] = 285, - [286] = 286, + [286] = 259, [287] = 287, [288] = 288, - [289] = 258, + [289] = 289, [290] = 290, - [291] = 291, + [291] = 260, [292] = 292, [293] = 293, [294] = 294, - [295] = 295, - [296] = 259, - [297] = 274, + [295] = 274, + [296] = 296, + [297] = 297, [298] = 298, [299] = 299, [300] = 300, @@ -1224,15 +1224,15 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [303] = 303, [304] = 304, [305] = 305, - [306] = 35, + [306] = 306, [307] = 307, - [308] = 261, - [309] = 309, + [308] = 308, + [309] = 262, [310] = 310, - [311] = 311, - [312] = 272, - [313] = 85, - [314] = 38, + [311] = 85, + [312] = 312, + [313] = 272, + [314] = 314, [315] = 315, [316] = 316, [317] = 317, @@ -1241,7 +1241,7 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [320] = 320, [321] = 321, [322] = 322, - [323] = 37, + [323] = 323, [324] = 324, [325] = 325, [326] = 326, @@ -1331,55 +1331,56 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [410] = 410, [411] = 411, [412] = 412, - [413] = 408, - [414] = 343, + [413] = 413, + [414] = 408, [415] = 415, [416] = 416, [417] = 417, [418] = 418, - [419] = 328, + [419] = 419, [420] = 398, - [421] = 378, - [422] = 422, + [421] = 381, + [422] = 418, [423] = 408, - [424] = 343, - [425] = 378, + [424] = 415, + [425] = 381, [426] = 408, - [427] = 343, - [428] = 325, + [427] = 415, + [428] = 355, [429] = 429, [430] = 430, [431] = 431, [432] = 432, [433] = 433, - [434] = 417, + [434] = 434, [435] = 435, [436] = 436, [437] = 437, [438] = 438, - [439] = 352, + [439] = 351, [440] = 440, [441] = 441, - [442] = 377, + [442] = 378, [443] = 443, - [444] = 325, + [444] = 355, [445] = 445, - [446] = 325, - [447] = 332, + [446] = 355, + [447] = 339, [448] = 448, [449] = 449, - [450] = 374, + [450] = 384, [451] = 451, - [452] = 384, - [453] = 453, + [452] = 396, + [453] = 415, [454] = 454, [455] = 455, - [456] = 438, + [456] = 437, [457] = 457, [458] = 458, [459] = 459, - [460] = 460, + [460] = 354, [461] = 461, + [462] = 462, }; static bool ts_lex(TSLexer *lexer, TSStateId state) { @@ -1392,7 +1393,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == '"') ADVANCE(27); if (lookahead == '#') ADVANCE(99); if (lookahead == '&') ADVANCE(165); - if (lookahead == '\'') ADVANCE(224); + if (lookahead == '\'') ADVANCE(225); if (lookahead == '(') ADVANCE(137); if (lookahead == ')') ADVANCE(139); if (lookahead == ',') ADVANCE(138); @@ -1409,18 +1410,18 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == '[') ADVANCE(140); if (lookahead == '\\') SKIP(112) if (lookahead == ']') ADVANCE(141); - if (lookahead == 'b') ADVANCE(226); + if (lookahead == 'b') ADVANCE(227); if (lookahead == 'c') ADVANCE(39); - if (lookahead == 'd') ADVANCE(225); + if (lookahead == 'd') ADVANCE(226); if (lookahead == 'e') ADVANCE(61); if (lookahead == 'g') ADVANCE(79); if (lookahead == 'i') ADVANCE(50); - if (lookahead == 'o') ADVANCE(228); + if (lookahead == 'o') ADVANCE(229); if (lookahead == 'p') ADVANCE(34); if (lookahead == 'r') ADVANCE(40); if (lookahead == 's') ADVANCE(41); if (lookahead == 'w') ADVANCE(53); - if (lookahead == 'x') ADVANCE(227); + if (lookahead == 'x') ADVANCE(228); if (lookahead == '{') ADVANCE(132); if (lookahead == '|') ADVANCE(164); if (lookahead == '}') ADVANCE(133); @@ -1430,7 +1431,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(0) - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(223); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(224); END_STATE(); case 1: if (lookahead == '\n') SKIP(23) @@ -1440,17 +1441,17 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == '\r') SKIP(1) END_STATE(); case 3: - if (lookahead == '\n') SKIP(24) + if (lookahead == '\n') SKIP(25) END_STATE(); case 4: - if (lookahead == '\n') SKIP(24) + if (lookahead == '\n') SKIP(25) if (lookahead == '\r') SKIP(3) END_STATE(); case 5: - if (lookahead == '\n') SKIP(25) + if (lookahead == '\n') SKIP(24) END_STATE(); case 6: - if (lookahead == '\n') SKIP(25) + if (lookahead == '\n') SKIP(24) if (lookahead == '\r') SKIP(5) END_STATE(); case 7: @@ -1563,7 +1564,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == ' ') SKIP(23) if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 24: if (lookahead == '!') ADVANCE(31); @@ -1576,7 +1577,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == '=') ADVANCE(151); if (lookahead == '>') ADVANCE(160); if (lookahead == '?') ADVANCE(166); - if (lookahead == '\\') SKIP(4) + if (lookahead == '\\') SKIP(6) if (lookahead == 'w') ADVANCE(58); if (lookahead == '{') ADVANCE(132); if (lookahead == '|') ADVANCE(164); @@ -1597,9 +1598,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == '>') ADVANCE(160); if (lookahead == '?') ADVANCE(166); if (lookahead == '@') ADVANCE(185); - if (lookahead == '\\') SKIP(6) + if (lookahead == '\\') SKIP(4) if (lookahead == 'c') ADVANCE(209); if (lookahead == 'g') ADVANCE(215); + if (lookahead == 's') ADVANCE(218); if (lookahead == '|') ADVANCE(164); if (lookahead == '}') ADVANCE(133); if (lookahead == '\t' || @@ -1608,7 +1610,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == ' ') SKIP(25) if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 26: if (lookahead == '!') ADVANCE(162); @@ -1624,10 +1626,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == '\n' || lookahead == '\r' || lookahead == ' ') SKIP(26) - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(223); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(224); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 27: if (lookahead == '"') ADVANCE(186); @@ -1648,7 +1650,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == ' ') SKIP(28) if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 29: if (lookahead == '*') ADVANCE(109); @@ -1672,7 +1674,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == ' ') SKIP(30) if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 31: if (lookahead == '=') ADVANCE(157); @@ -2061,10 +2063,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { case 135: ACCEPT_TOKEN(anon_sym_comb); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 136: ACCEPT_TOKEN(anon_sym_COLON); @@ -2119,10 +2121,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { case 149: ACCEPT_TOKEN(anon_sym_ref); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 150: ACCEPT_TOKEN(anon_sym_EQ); @@ -2140,10 +2142,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { case 154: ACCEPT_TOKEN(anon_sym_group); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 155: ACCEPT_TOKEN(anon_sym_DOT); @@ -2193,10 +2195,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { case 169: ACCEPT_TOKEN(anon_sym_invoke); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 170: ACCEPT_TOKEN(anon_sym_with); @@ -2207,10 +2209,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { case 172: ACCEPT_TOKEN(anon_sym_seq); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 173: ACCEPT_TOKEN(anon_sym_par); @@ -2218,10 +2220,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { case 174: ACCEPT_TOKEN(anon_sym_par); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 175: ACCEPT_TOKEN(anon_sym_if); @@ -2229,10 +2231,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { case 176: ACCEPT_TOKEN(anon_sym_if); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 177: ACCEPT_TOKEN(anon_sym_else); @@ -2240,10 +2242,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { case 178: ACCEPT_TOKEN(anon_sym_else); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 179: ACCEPT_TOKEN(anon_sym_while); @@ -2251,10 +2253,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { case 180: ACCEPT_TOKEN(anon_sym_while); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 181: ACCEPT_TOKEN(anon_sym_static); @@ -2262,10 +2264,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { case 182: ACCEPT_TOKEN(anon_sym_static); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 183: ACCEPT_TOKEN(anon_sym_repeat); @@ -2273,10 +2275,10 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { case 184: ACCEPT_TOKEN(anon_sym_repeat); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 185: ACCEPT_TOKEN(anon_sym_AT); @@ -2291,343 +2293,352 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { ACCEPT_TOKEN(sym_ident); if (lookahead == 'a') ADVANCE(214); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('b' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 188: ACCEPT_TOKEN(sym_ident); - if (lookahead == 'a') ADVANCE(218); + if (lookahead == 'a') ADVANCE(219); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('b' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 189: ACCEPT_TOKEN(sym_ident); if (lookahead == 'a') ADVANCE(217); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('b' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('b' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 190: ACCEPT_TOKEN(sym_ident); if (lookahead == 'b') ADVANCE(135); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 191: ACCEPT_TOKEN(sym_ident); if (lookahead == 'c') ADVANCE(182); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 192: ACCEPT_TOKEN(sym_ident); if (lookahead == 'e') ADVANCE(212); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 193: ACCEPT_TOKEN(sym_ident); if (lookahead == 'e') ADVANCE(213); if (lookahead == 't') ADVANCE(188); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 194: ACCEPT_TOKEN(sym_ident); if (lookahead == 'e') ADVANCE(180); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 195: ACCEPT_TOKEN(sym_ident); if (lookahead == 'e') ADVANCE(169); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 196: ACCEPT_TOKEN(sym_ident); if (lookahead == 'e') ADVANCE(178); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 197: ACCEPT_TOKEN(sym_ident); if (lookahead == 'e') ADVANCE(200); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 198: ACCEPT_TOKEN(sym_ident); if (lookahead == 'e') ADVANCE(189); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 199: ACCEPT_TOKEN(sym_ident); if (lookahead == 'f') ADVANCE(176); - if (lookahead == 'n') ADVANCE(220); + if (lookahead == 'n') ADVANCE(221); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 200: ACCEPT_TOKEN(sym_ident); if (lookahead == 'f') ADVANCE(149); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 201: ACCEPT_TOKEN(sym_ident); if (lookahead == 'h') ADVANCE(202); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 202: ACCEPT_TOKEN(sym_ident); if (lookahead == 'i') ADVANCE(206); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 203: ACCEPT_TOKEN(sym_ident); if (lookahead == 'i') ADVANCE(191); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 204: ACCEPT_TOKEN(sym_ident); if (lookahead == 'k') ADVANCE(195); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 205: ACCEPT_TOKEN(sym_ident); if (lookahead == 'l') ADVANCE(216); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 206: ACCEPT_TOKEN(sym_ident); if (lookahead == 'l') ADVANCE(194); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 207: ACCEPT_TOKEN(sym_ident); if (lookahead == 'm') ADVANCE(190); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 208: ACCEPT_TOKEN(sym_ident); if (lookahead == 'o') ADVANCE(204); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 209: ACCEPT_TOKEN(sym_ident); if (lookahead == 'o') ADVANCE(207); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 210: ACCEPT_TOKEN(sym_ident); - if (lookahead == 'o') ADVANCE(219); + if (lookahead == 'o') ADVANCE(220); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 211: ACCEPT_TOKEN(sym_ident); if (lookahead == 'p') ADVANCE(154); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 212: ACCEPT_TOKEN(sym_ident); if (lookahead == 'p') ADVANCE(198); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 213: ACCEPT_TOKEN(sym_ident); if (lookahead == 'q') ADVANCE(172); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 214: ACCEPT_TOKEN(sym_ident); if (lookahead == 'r') ADVANCE(174); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 215: ACCEPT_TOKEN(sym_ident); if (lookahead == 'r') ADVANCE(210); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 216: ACCEPT_TOKEN(sym_ident); if (lookahead == 's') ADVANCE(196); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 217: ACCEPT_TOKEN(sym_ident); if (lookahead == 't') ADVANCE(184); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 218: ACCEPT_TOKEN(sym_ident); - if (lookahead == 't') ADVANCE(203); + if (lookahead == 't') ADVANCE(188); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 219: ACCEPT_TOKEN(sym_ident); - if (lookahead == 'u') ADVANCE(211); + if (lookahead == 't') ADVANCE(203); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 220: ACCEPT_TOKEN(sym_ident); - if (lookahead == 'v') ADVANCE(208); + if (lookahead == 'u') ADVANCE(211); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 221: ACCEPT_TOKEN(sym_ident); + if (lookahead == 'v') ADVANCE(208); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9')) ADVANCE(222); + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || - ('a' <= lookahead && lookahead <= 'z')) ADVANCE(221); + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 222: ACCEPT_TOKEN(sym_ident); if (lookahead == '-' || - ('0' <= lookahead && lookahead <= '9') || - ('A' <= lookahead && lookahead <= 'Z') || + ('0' <= lookahead && lookahead <= '9')) ADVANCE(223); + if (('A' <= lookahead && lookahead <= 'Z') || lookahead == '_' || ('a' <= lookahead && lookahead <= 'z')) ADVANCE(222); END_STATE(); case 223: - ACCEPT_TOKEN(sym_number); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(223); + ACCEPT_TOKEN(sym_ident); + if (lookahead == '-' || + ('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'Z') || + lookahead == '_' || + ('a' <= lookahead && lookahead <= 'z')) ADVANCE(223); END_STATE(); case 224: - ACCEPT_TOKEN(anon_sym_SQUOTE); + ACCEPT_TOKEN(sym_number); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(224); END_STATE(); case 225: - ACCEPT_TOKEN(anon_sym_d); + ACCEPT_TOKEN(anon_sym_SQUOTE); END_STATE(); case 226: - ACCEPT_TOKEN(anon_sym_b); + ACCEPT_TOKEN(anon_sym_d); END_STATE(); case 227: - ACCEPT_TOKEN(anon_sym_x); + ACCEPT_TOKEN(anon_sym_b); END_STATE(); case 228: + ACCEPT_TOKEN(anon_sym_x); + END_STATE(); + case 229: ACCEPT_TOKEN(anon_sym_o); END_STATE(); default: @@ -2655,56 +2666,56 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [16] = {.lex_state = 23}, [17] = {.lex_state = 23}, [18] = {.lex_state = 23}, - [19] = {.lex_state = 0}, - [20] = {.lex_state = 24}, - [21] = {.lex_state = 0}, + [19] = {.lex_state = 23}, + [20] = {.lex_state = 0}, + [21] = {.lex_state = 25}, [22] = {.lex_state = 0}, - [23] = {.lex_state = 23}, - [24] = {.lex_state = 25}, - [25] = {.lex_state = 23}, + [23] = {.lex_state = 24}, + [24] = {.lex_state = 0}, + [25] = {.lex_state = 25}, [26] = {.lex_state = 23}, - [27] = {.lex_state = 0}, + [27] = {.lex_state = 25}, [28] = {.lex_state = 23}, - [29] = {.lex_state = 26}, - [30] = {.lex_state = 25}, + [29] = {.lex_state = 0}, + [30] = {.lex_state = 23}, [31] = {.lex_state = 26}, [32] = {.lex_state = 30}, [33] = {.lex_state = 26}, - [34] = {.lex_state = 25}, - [35] = {.lex_state = 30}, - [36] = {.lex_state = 26}, + [34] = {.lex_state = 30}, + [35] = {.lex_state = 26}, + [36] = {.lex_state = 25}, [37] = {.lex_state = 30}, [38] = {.lex_state = 30}, [39] = {.lex_state = 23}, - [40] = {.lex_state = 25}, + [40] = {.lex_state = 26}, [41] = {.lex_state = 23}, [42] = {.lex_state = 23}, - [43] = {.lex_state = 23}, + [43] = {.lex_state = 25}, [44] = {.lex_state = 23}, [45] = {.lex_state = 23}, [46] = {.lex_state = 23}, [47] = {.lex_state = 23}, - [48] = {.lex_state = 25}, + [48] = {.lex_state = 23}, [49] = {.lex_state = 25}, [50] = {.lex_state = 25}, - [51] = {.lex_state = 25}, + [51] = {.lex_state = 23}, [52] = {.lex_state = 23}, - [53] = {.lex_state = 25}, - [54] = {.lex_state = 25}, - [55] = {.lex_state = 25}, + [53] = {.lex_state = 23}, + [54] = {.lex_state = 23}, + [55] = {.lex_state = 23}, [56] = {.lex_state = 23}, [57] = {.lex_state = 23}, - [58] = {.lex_state = 23}, + [58] = {.lex_state = 25}, [59] = {.lex_state = 23}, - [60] = {.lex_state = 23}, - [61] = {.lex_state = 23}, + [60] = {.lex_state = 25}, + [61] = {.lex_state = 25}, [62] = {.lex_state = 23}, - [63] = {.lex_state = 23}, - [64] = {.lex_state = 23}, - [65] = {.lex_state = 23}, + [63] = {.lex_state = 25}, + [64] = {.lex_state = 25}, + [65] = {.lex_state = 25}, [66] = {.lex_state = 23}, - [67] = {.lex_state = 25}, - [68] = {.lex_state = 25}, + [67] = {.lex_state = 23}, + [68] = {.lex_state = 23}, [69] = {.lex_state = 23}, [70] = {.lex_state = 23}, [71] = {.lex_state = 23}, @@ -2718,191 +2729,191 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [79] = {.lex_state = 23}, [80] = {.lex_state = 25}, [81] = {.lex_state = 25}, - [82] = {.lex_state = 25}, - [83] = {.lex_state = 0}, + [82] = {.lex_state = 0}, + [83] = {.lex_state = 25}, [84] = {.lex_state = 25}, [85] = {.lex_state = 23}, - [86] = {.lex_state = 26}, - [87] = {.lex_state = 26}, - [88] = {.lex_state = 0}, + [86] = {.lex_state = 23}, + [87] = {.lex_state = 0}, + [88] = {.lex_state = 26}, [89] = {.lex_state = 26}, [90] = {.lex_state = 26}, [91] = {.lex_state = 26}, - [92] = {.lex_state = 26}, + [92] = {.lex_state = 0}, [93] = {.lex_state = 26}, [94] = {.lex_state = 26}, - [95] = {.lex_state = 0}, + [95] = {.lex_state = 26}, [96] = {.lex_state = 26}, - [97] = {.lex_state = 0}, - [98] = {.lex_state = 0}, + [97] = {.lex_state = 26}, + [98] = {.lex_state = 26}, [99] = {.lex_state = 0}, [100] = {.lex_state = 26}, - [101] = {.lex_state = 0}, + [101] = {.lex_state = 26}, [102] = {.lex_state = 26}, [103] = {.lex_state = 26}, [104] = {.lex_state = 26}, [105] = {.lex_state = 26}, - [106] = {.lex_state = 26}, + [106] = {.lex_state = 0}, [107] = {.lex_state = 26}, - [108] = {.lex_state = 26}, + [108] = {.lex_state = 0}, [109] = {.lex_state = 0}, [110] = {.lex_state = 0}, - [111] = {.lex_state = 28}, + [111] = {.lex_state = 0}, [112] = {.lex_state = 0}, [113] = {.lex_state = 0}, [114] = {.lex_state = 0}, [115] = {.lex_state = 0}, [116] = {.lex_state = 0}, [117] = {.lex_state = 0}, - [118] = {.lex_state = 0}, + [118] = {.lex_state = 28}, [119] = {.lex_state = 0}, [120] = {.lex_state = 0}, - [121] = {.lex_state = 26}, + [121] = {.lex_state = 0}, [122] = {.lex_state = 0}, [123] = {.lex_state = 0}, - [124] = {.lex_state = 25}, + [124] = {.lex_state = 28}, [125] = {.lex_state = 0}, [126] = {.lex_state = 0}, - [127] = {.lex_state = 25}, + [127] = {.lex_state = 0}, [128] = {.lex_state = 0}, [129] = {.lex_state = 0}, - [130] = {.lex_state = 0}, - [131] = {.lex_state = 0}, + [130] = {.lex_state = 26}, + [131] = {.lex_state = 26}, [132] = {.lex_state = 0}, - [133] = {.lex_state = 0}, + [133] = {.lex_state = 28}, [134] = {.lex_state = 0}, - [135] = {.lex_state = 26}, + [135] = {.lex_state = 0}, [136] = {.lex_state = 0}, [137] = {.lex_state = 0}, - [138] = {.lex_state = 26}, - [139] = {.lex_state = 0}, + [138] = {.lex_state = 25}, + [139] = {.lex_state = 25}, [140] = {.lex_state = 0}, - [141] = {.lex_state = 28}, + [141] = {.lex_state = 0}, [142] = {.lex_state = 0}, [143] = {.lex_state = 25}, - [144] = {.lex_state = 0}, - [145] = {.lex_state = 25}, - [146] = {.lex_state = 28}, + [144] = {.lex_state = 25}, + [145] = {.lex_state = 0}, + [146] = {.lex_state = 26}, [147] = {.lex_state = 0}, [148] = {.lex_state = 0}, [149] = {.lex_state = 0}, [150] = {.lex_state = 0}, - [151] = {.lex_state = 0}, - [152] = {.lex_state = 26}, + [151] = {.lex_state = 25}, + [152] = {.lex_state = 25}, [153] = {.lex_state = 0}, - [154] = {.lex_state = 25}, - [155] = {.lex_state = 0}, + [154] = {.lex_state = 0}, + [155] = {.lex_state = 25}, [156] = {.lex_state = 25}, - [157] = {.lex_state = 28}, - [158] = {.lex_state = 0}, - [159] = {.lex_state = 0}, - [160] = {.lex_state = 25}, - [161] = {.lex_state = 25}, - [162] = {.lex_state = 28}, - [163] = {.lex_state = 25}, - [164] = {.lex_state = 28}, - [165] = {.lex_state = 0}, + [157] = {.lex_state = 25}, + [158] = {.lex_state = 25}, + [159] = {.lex_state = 25}, + [160] = {.lex_state = 26}, + [161] = {.lex_state = 0}, + [162] = {.lex_state = 0}, + [163] = {.lex_state = 28}, + [164] = {.lex_state = 0}, + [165] = {.lex_state = 28}, [166] = {.lex_state = 0}, [167] = {.lex_state = 0}, [168] = {.lex_state = 0}, [169] = {.lex_state = 28}, [170] = {.lex_state = 0}, - [171] = {.lex_state = 25}, - [172] = {.lex_state = 28}, - [173] = {.lex_state = 25}, + [171] = {.lex_state = 0}, + [172] = {.lex_state = 0}, + [173] = {.lex_state = 28}, [174] = {.lex_state = 28}, - [175] = {.lex_state = 26}, - [176] = {.lex_state = 28}, - [177] = {.lex_state = 0}, + [175] = {.lex_state = 28}, + [176] = {.lex_state = 0}, + [177] = {.lex_state = 28}, [178] = {.lex_state = 0}, [179] = {.lex_state = 0}, - [180] = {.lex_state = 26}, - [181] = {.lex_state = 26}, - [182] = {.lex_state = 28}, + [180] = {.lex_state = 0}, + [181] = {.lex_state = 28}, + [182] = {.lex_state = 26}, [183] = {.lex_state = 0}, - [184] = {.lex_state = 26}, + [184] = {.lex_state = 0}, [185] = {.lex_state = 0}, [186] = {.lex_state = 0}, [187] = {.lex_state = 26}, - [188] = {.lex_state = 0}, + [188] = {.lex_state = 26}, [189] = {.lex_state = 0}, - [190] = {.lex_state = 0}, + [190] = {.lex_state = 26}, [191] = {.lex_state = 0}, [192] = {.lex_state = 26}, [193] = {.lex_state = 0}, [194] = {.lex_state = 0}, - [195] = {.lex_state = 28}, - [196] = {.lex_state = 0}, - [197] = {.lex_state = 26}, - [198] = {.lex_state = 0}, - [199] = {.lex_state = 28}, - [200] = {.lex_state = 26}, - [201] = {.lex_state = 0}, - [202] = {.lex_state = 26}, - [203] = {.lex_state = 0}, + [195] = {.lex_state = 26}, + [196] = {.lex_state = 28}, + [197] = {.lex_state = 0}, + [198] = {.lex_state = 28}, + [199] = {.lex_state = 26}, + [200] = {.lex_state = 0}, + [201] = {.lex_state = 14}, + [202] = {.lex_state = 14}, + [203] = {.lex_state = 26}, [204] = {.lex_state = 0}, - [205] = {.lex_state = 26}, - [206] = {.lex_state = 26}, - [207] = {.lex_state = 26}, + [205] = {.lex_state = 0}, + [206] = {.lex_state = 0}, + [207] = {.lex_state = 0}, [208] = {.lex_state = 0}, [209] = {.lex_state = 0}, [210] = {.lex_state = 26}, [211] = {.lex_state = 26}, [212] = {.lex_state = 0}, [213] = {.lex_state = 0}, - [214] = {.lex_state = 0}, - [215] = {.lex_state = 26}, + [214] = {.lex_state = 26}, + [215] = {.lex_state = 0}, [216] = {.lex_state = 0}, [217] = {.lex_state = 0}, - [218] = {.lex_state = 0}, - [219] = {.lex_state = 0}, - [220] = {.lex_state = 14}, - [221] = {.lex_state = 26}, - [222] = {.lex_state = 26}, + [218] = {.lex_state = 26}, + [219] = {.lex_state = 26}, + [220] = {.lex_state = 0}, + [221] = {.lex_state = 0}, + [222] = {.lex_state = 0}, [223] = {.lex_state = 26}, [224] = {.lex_state = 0}, [225] = {.lex_state = 0}, [226] = {.lex_state = 0}, - [227] = {.lex_state = 0}, - [228] = {.lex_state = 0}, - [229] = {.lex_state = 14}, + [227] = {.lex_state = 26}, + [228] = {.lex_state = 26}, + [229] = {.lex_state = 0}, [230] = {.lex_state = 0}, - [231] = {.lex_state = 0}, + [231] = {.lex_state = 26}, [232] = {.lex_state = 0}, - [233] = {.lex_state = 0}, + [233] = {.lex_state = 26}, [234] = {.lex_state = 0}, - [235] = {.lex_state = 26}, + [235] = {.lex_state = 0}, [236] = {.lex_state = 0}, - [237] = {.lex_state = 0}, - [238] = {.lex_state = 0}, - [239] = {.lex_state = 14}, - [240] = {.lex_state = 28}, - [241] = {.lex_state = 26}, - [242] = {.lex_state = 26}, + [237] = {.lex_state = 26}, + [238] = {.lex_state = 26}, + [239] = {.lex_state = 0}, + [240] = {.lex_state = 26}, + [241] = {.lex_state = 14}, + [242] = {.lex_state = 0}, [243] = {.lex_state = 26}, [244] = {.lex_state = 26}, [245] = {.lex_state = 0}, [246] = {.lex_state = 0}, [247] = {.lex_state = 0}, - [248] = {.lex_state = 26}, - [249] = {.lex_state = 0}, - [250] = {.lex_state = 0}, + [248] = {.lex_state = 0}, + [249] = {.lex_state = 26}, + [250] = {.lex_state = 26}, [251] = {.lex_state = 0}, [252] = {.lex_state = 0}, [253] = {.lex_state = 0}, - [254] = {.lex_state = 26}, + [254] = {.lex_state = 0}, [255] = {.lex_state = 26}, - [256] = {.lex_state = 0}, + [256] = {.lex_state = 28}, [257] = {.lex_state = 0}, - [258] = {.lex_state = 0}, + [258] = {.lex_state = 26}, [259] = {.lex_state = 0}, [260] = {.lex_state = 0}, [261] = {.lex_state = 0}, [262] = {.lex_state = 0}, [263] = {.lex_state = 0}, - [264] = {.lex_state = 26}, + [264] = {.lex_state = 0}, [265] = {.lex_state = 0}, - [266] = {.lex_state = 0}, + [266] = {.lex_state = 26}, [267] = {.lex_state = 0}, [268] = {.lex_state = 0}, [269] = {.lex_state = 0}, @@ -2913,23 +2924,23 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [274] = {.lex_state = 0}, [275] = {.lex_state = 26}, [276] = {.lex_state = 0}, - [277] = {.lex_state = 26}, + [277] = {.lex_state = 0}, [278] = {.lex_state = 0}, [279] = {.lex_state = 26}, [280] = {.lex_state = 0}, - [281] = {.lex_state = 0}, + [281] = {.lex_state = 26}, [282] = {.lex_state = 0}, - [283] = {.lex_state = 28}, - [284] = {.lex_state = 26}, - [285] = {.lex_state = 26}, + [283] = {.lex_state = 0}, + [284] = {.lex_state = 28}, + [285] = {.lex_state = 0}, [286] = {.lex_state = 0}, [287] = {.lex_state = 0}, [288] = {.lex_state = 0}, - [289] = {.lex_state = 0}, + [289] = {.lex_state = 26}, [290] = {.lex_state = 0}, [291] = {.lex_state = 0}, [292] = {.lex_state = 0}, - [293] = {.lex_state = 0}, + [293] = {.lex_state = 26}, [294] = {.lex_state = 0}, [295] = {.lex_state = 0}, [296] = {.lex_state = 0}, @@ -2943,104 +2954,104 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [304] = {.lex_state = 0}, [305] = {.lex_state = 0}, [306] = {.lex_state = 0}, - [307] = {.lex_state = 26}, - [308] = {.lex_state = 0}, - [309] = {.lex_state = 14}, - [310] = {.lex_state = 26}, - [311] = {.lex_state = 0}, + [307] = {.lex_state = 0}, + [308] = {.lex_state = 26}, + [309] = {.lex_state = 0}, + [310] = {.lex_state = 0}, + [311] = {.lex_state = 26}, [312] = {.lex_state = 0}, - [313] = {.lex_state = 26}, + [313] = {.lex_state = 0}, [314] = {.lex_state = 0}, - [315] = {.lex_state = 0}, - [316] = {.lex_state = 26}, - [317] = {.lex_state = 0}, + [315] = {.lex_state = 14}, + [316] = {.lex_state = 0}, + [317] = {.lex_state = 26}, [318] = {.lex_state = 0}, [319] = {.lex_state = 0}, [320] = {.lex_state = 0}, - [321] = {.lex_state = 28}, + [321] = {.lex_state = 0}, [322] = {.lex_state = 0}, [323] = {.lex_state = 0}, - [324] = {.lex_state = 0}, + [324] = {.lex_state = 28}, [325] = {.lex_state = 0}, - [326] = {.lex_state = 0}, + [326] = {.lex_state = 26}, [327] = {.lex_state = 0}, [328] = {.lex_state = 0}, [329] = {.lex_state = 0}, [330] = {.lex_state = 0}, [331] = {.lex_state = 26}, [332] = {.lex_state = 26}, - [333] = {.lex_state = 0}, - [334] = {.lex_state = 26}, + [333] = {.lex_state = 26}, + [334] = {.lex_state = 0}, [335] = {.lex_state = 0}, - [336] = {.lex_state = 26}, - [337] = {.lex_state = 0}, + [336] = {.lex_state = 0}, + [337] = {.lex_state = 26}, [338] = {.lex_state = 0}, [339] = {.lex_state = 26}, [340] = {.lex_state = 0}, - [341] = {.lex_state = 0}, + [341] = {.lex_state = 26}, [342] = {.lex_state = 26}, [343] = {.lex_state = 0}, [344] = {.lex_state = 0}, - [345] = {.lex_state = 26}, + [345] = {.lex_state = 121}, [346] = {.lex_state = 26}, [347] = {.lex_state = 0}, - [348] = {.lex_state = 0}, + [348] = {.lex_state = 26}, [349] = {.lex_state = 0}, - [350] = {.lex_state = 26}, - [351] = {.lex_state = 121}, + [350] = {.lex_state = 0}, + [351] = {.lex_state = 0}, [352] = {.lex_state = 0}, [353] = {.lex_state = 0}, [354] = {.lex_state = 0}, [355] = {.lex_state = 0}, - [356] = {.lex_state = 26}, + [356] = {.lex_state = 0}, [357] = {.lex_state = 0}, [358] = {.lex_state = 0}, [359] = {.lex_state = 0}, [360] = {.lex_state = 0}, [361] = {.lex_state = 0}, [362] = {.lex_state = 0}, - [363] = {.lex_state = 26}, + [363] = {.lex_state = 0}, [364] = {.lex_state = 0}, [365] = {.lex_state = 26}, [366] = {.lex_state = 26}, [367] = {.lex_state = 0}, - [368] = {.lex_state = 26}, + [368] = {.lex_state = 0}, [369] = {.lex_state = 26}, [370] = {.lex_state = 0}, - [371] = {.lex_state = 26}, - [372] = {.lex_state = 0}, + [371] = {.lex_state = 0}, + [372] = {.lex_state = 26}, [373] = {.lex_state = 0}, - [374] = {.lex_state = 26}, - [375] = {.lex_state = 26}, - [376] = {.lex_state = 0}, + [374] = {.lex_state = 0}, + [375] = {.lex_state = 0}, + [376] = {.lex_state = 26}, [377] = {.lex_state = 0}, [378] = {.lex_state = 0}, - [379] = {.lex_state = 0}, - [380] = {.lex_state = 0}, + [379] = {.lex_state = 26}, + [380] = {.lex_state = 26}, [381] = {.lex_state = 0}, [382] = {.lex_state = 0}, [383] = {.lex_state = 0}, - [384] = {.lex_state = 0}, + [384] = {.lex_state = 26}, [385] = {.lex_state = 0}, - [386] = {.lex_state = 26}, + [386] = {.lex_state = 0}, [387] = {.lex_state = 26}, - [388] = {.lex_state = 0}, + [388] = {.lex_state = 26}, [389] = {.lex_state = 0}, - [390] = {.lex_state = 26}, + [390] = {.lex_state = 0}, [391] = {.lex_state = 0}, - [392] = {.lex_state = 26}, - [393] = {.lex_state = 0}, - [394] = {.lex_state = 0}, + [392] = {.lex_state = 0}, + [393] = {.lex_state = 26}, + [394] = {.lex_state = 26}, [395] = {.lex_state = 0}, [396] = {.lex_state = 0}, [397] = {.lex_state = 0}, [398] = {.lex_state = 0}, - [399] = {.lex_state = 26}, - [400] = {.lex_state = 0}, + [399] = {.lex_state = 0}, + [400] = {.lex_state = 26}, [401] = {.lex_state = 0}, - [402] = {.lex_state = 0}, + [402] = {.lex_state = 26}, [403] = {.lex_state = 0}, - [404] = {.lex_state = 26}, + [404] = {.lex_state = 0}, [405] = {.lex_state = 0}, [406] = {.lex_state = 26}, [407] = {.lex_state = 0}, @@ -3049,8 +3060,8 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [410] = {.lex_state = 0}, [411] = {.lex_state = 0}, [412] = {.lex_state = 0}, - [413] = {.lex_state = 26}, - [414] = {.lex_state = 0}, + [413] = {.lex_state = 0}, + [414] = {.lex_state = 26}, [415] = {.lex_state = 0}, [416] = {.lex_state = 0}, [417] = {.lex_state = 0}, @@ -3070,16 +3081,16 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [431] = {.lex_state = 26}, [432] = {.lex_state = 0}, [433] = {.lex_state = 0}, - [434] = {.lex_state = 0}, - [435] = {.lex_state = 26}, + [434] = {.lex_state = 26}, + [435] = {.lex_state = 0}, [436] = {.lex_state = 0}, [437] = {.lex_state = 0}, - [438] = {.lex_state = 0}, + [438] = {.lex_state = 26}, [439] = {.lex_state = 0}, [440] = {.lex_state = 0}, [441] = {.lex_state = 22}, [442] = {.lex_state = 0}, - [443] = {.lex_state = 26}, + [443] = {.lex_state = 0}, [444] = {.lex_state = 0}, [445] = {.lex_state = 0}, [446] = {.lex_state = 0}, @@ -3096,8 +3107,9 @@ static const TSLexMode ts_lex_modes[STATE_COUNT] = { [457] = {.lex_state = 26}, [458] = {.lex_state = 0}, [459] = {.lex_state = 0}, - [460] = {(TSStateId)(-1)}, + [460] = {.lex_state = 0}, [461] = {(TSStateId)(-1)}, + [462] = {(TSStateId)(-1)}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { @@ -3161,16 +3173,16 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [1] = { [sym_source_file] = STATE(449), [sym_comment] = STATE(1), - [sym_import] = STATE(117), + [sym_import] = STATE(113), [sym_metadata_ci] = STATE(448), [sym_metadata] = STATE(445), [sym_component] = STATE(140), - [sym_comb_or_static] = STATE(260), + [sym_comb_or_static] = STATE(261), [sym_primitive] = STATE(140), [sym_extern] = STATE(140), - [sym_static_annotation] = STATE(204), - [aux_sym_source_file_repeat1] = STATE(19), - [aux_sym_source_file_repeat2] = STATE(21), + [sym_static_annotation] = STATE(230), + [aux_sym_source_file_repeat1] = STATE(20), + [aux_sym_source_file_repeat2] = STATE(22), [ts_builtin_sym_end] = ACTIONS(7), [anon_sym_SLASH_SLASH] = ACTIONS(3), [aux_sym_comment_token2] = ACTIONS(5), @@ -3185,7 +3197,7 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { }; static const uint16_t ts_small_parse_table[] = { - [0] = 20, + [0] = 21, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3214,17 +3226,19 @@ static const uint16_t ts_small_parse_table[] = { sym_ident, STATE(2), 1, sym_comment, - STATE(7), 1, - aux_sym_seq_repeat1, - STATE(26), 1, + STATE(12), 1, + aux_sym_control_inner_repeat1, + STATE(28), 1, aux_sym_io_port_repeat1, - STATE(75), 1, + STATE(55), 1, sym_stmt, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, - STATE(185), 1, + STATE(179), 1, sym_static_annotation, - STATE(45), 7, + STATE(359), 1, + sym_control_inner, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3232,46 +3246,45 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [67] = 20, + [70] = 19, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(23), 1, + ACTIONS(45), 1, anon_sym_SEMI, - ACTIONS(27), 1, + ACTIONS(48), 1, + anon_sym_RBRACE, + ACTIONS(50), 1, anon_sym_invoke, - ACTIONS(29), 1, + ACTIONS(53), 1, anon_sym_seq, - ACTIONS(31), 1, + ACTIONS(56), 1, anon_sym_par, - ACTIONS(33), 1, + ACTIONS(59), 1, anon_sym_if, - ACTIONS(35), 1, + ACTIONS(62), 1, anon_sym_while, - ACTIONS(37), 1, + ACTIONS(65), 1, anon_sym_static, - ACTIONS(39), 1, + ACTIONS(68), 1, anon_sym_repeat, - ACTIONS(41), 1, + ACTIONS(71), 1, anon_sym_AT, - ACTIONS(43), 1, + ACTIONS(74), 1, sym_ident, - ACTIONS(45), 1, - anon_sym_RBRACE, - STATE(3), 1, - sym_comment, - STATE(11), 1, - aux_sym_seq_repeat1, - STATE(26), 1, + STATE(28), 1, aux_sym_io_port_repeat1, - STATE(75), 1, + STATE(55), 1, sym_stmt, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, - STATE(185), 1, + STATE(179), 1, sym_static_annotation, - STATE(45), 7, + STATE(3), 2, + sym_comment, + aux_sym_control_inner_repeat1, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3279,7 +3292,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [134] = 20, + [135] = 20, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3304,21 +3317,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AT, ACTIONS(43), 1, sym_ident, - ACTIONS(47), 1, + ACTIONS(77), 1, anon_sym_RBRACE, STATE(4), 1, sym_comment, - STATE(10), 1, - aux_sym_seq_repeat1, - STATE(26), 1, + STATE(6), 1, + aux_sym_control_inner_repeat1, + STATE(28), 1, aux_sym_io_port_repeat1, - STATE(75), 1, + STATE(55), 1, sym_stmt, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, - STATE(185), 1, + STATE(179), 1, sym_static_annotation, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3326,7 +3339,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [201] = 20, + [202] = 20, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3351,21 +3364,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AT, ACTIONS(43), 1, sym_ident, - ACTIONS(45), 1, + ACTIONS(79), 1, anon_sym_RBRACE, STATE(5), 1, sym_comment, - STATE(7), 1, - aux_sym_seq_repeat1, - STATE(26), 1, + STATE(9), 1, + aux_sym_control_inner_repeat1, + STATE(28), 1, aux_sym_io_port_repeat1, - STATE(75), 1, + STATE(55), 1, sym_stmt, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, - STATE(185), 1, + STATE(179), 1, sym_static_annotation, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3373,7 +3386,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [268] = 20, + [269] = 20, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3398,21 +3411,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AT, ACTIONS(43), 1, sym_ident, - ACTIONS(47), 1, + ACTIONS(81), 1, anon_sym_RBRACE, + STATE(3), 1, + aux_sym_control_inner_repeat1, STATE(6), 1, sym_comment, - STATE(7), 1, - aux_sym_seq_repeat1, - STATE(26), 1, + STATE(28), 1, aux_sym_io_port_repeat1, - STATE(75), 1, + STATE(55), 1, sym_stmt, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, - STATE(185), 1, + STATE(179), 1, sym_static_annotation, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3420,45 +3433,46 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [335] = 19, + [336] = 20, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(49), 1, + ACTIONS(23), 1, anon_sym_SEMI, - ACTIONS(52), 1, - anon_sym_RBRACE, - ACTIONS(54), 1, + ACTIONS(27), 1, anon_sym_invoke, - ACTIONS(57), 1, + ACTIONS(29), 1, anon_sym_seq, - ACTIONS(60), 1, + ACTIONS(31), 1, anon_sym_par, - ACTIONS(63), 1, + ACTIONS(33), 1, anon_sym_if, - ACTIONS(66), 1, + ACTIONS(35), 1, anon_sym_while, - ACTIONS(69), 1, + ACTIONS(37), 1, anon_sym_static, - ACTIONS(72), 1, + ACTIONS(39), 1, anon_sym_repeat, - ACTIONS(75), 1, + ACTIONS(41), 1, anon_sym_AT, - ACTIONS(78), 1, + ACTIONS(43), 1, sym_ident, - STATE(26), 1, + ACTIONS(83), 1, + anon_sym_RBRACE, + STATE(3), 1, + aux_sym_control_inner_repeat1, + STATE(7), 1, + sym_comment, + STATE(28), 1, aux_sym_io_port_repeat1, - STATE(75), 1, + STATE(55), 1, sym_stmt, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, - STATE(185), 1, + STATE(179), 1, sym_static_annotation, - STATE(7), 2, - sym_comment, - aux_sym_seq_repeat1, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3466,7 +3480,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [400] = 20, + [403] = 20, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3491,21 +3505,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AT, ACTIONS(43), 1, sym_ident, - ACTIONS(81), 1, + ACTIONS(85), 1, anon_sym_RBRACE, - STATE(5), 1, - aux_sym_seq_repeat1, + STATE(3), 1, + aux_sym_control_inner_repeat1, STATE(8), 1, sym_comment, - STATE(26), 1, + STATE(28), 1, aux_sym_io_port_repeat1, - STATE(75), 1, + STATE(55), 1, sym_stmt, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, - STATE(185), 1, + STATE(179), 1, sym_static_annotation, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3513,7 +3527,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [467] = 20, + [470] = 20, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3538,21 +3552,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AT, ACTIONS(43), 1, sym_ident, - ACTIONS(83), 1, + ACTIONS(87), 1, anon_sym_RBRACE, - STATE(6), 1, - aux_sym_seq_repeat1, + STATE(3), 1, + aux_sym_control_inner_repeat1, STATE(9), 1, sym_comment, - STATE(26), 1, + STATE(28), 1, aux_sym_io_port_repeat1, - STATE(75), 1, + STATE(55), 1, sym_stmt, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, - STATE(185), 1, + STATE(179), 1, sym_static_annotation, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3560,7 +3574,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [534] = 20, + [537] = 20, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3585,21 +3599,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AT, ACTIONS(43), 1, sym_ident, - ACTIONS(85), 1, + ACTIONS(89), 1, anon_sym_RBRACE, - STATE(7), 1, - aux_sym_seq_repeat1, + STATE(8), 1, + aux_sym_control_inner_repeat1, STATE(10), 1, sym_comment, - STATE(26), 1, + STATE(28), 1, aux_sym_io_port_repeat1, - STATE(75), 1, + STATE(55), 1, sym_stmt, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, - STATE(185), 1, + STATE(179), 1, sym_static_annotation, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3607,7 +3621,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [601] = 20, + [604] = 20, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3632,21 +3646,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AT, ACTIONS(43), 1, sym_ident, - ACTIONS(87), 1, + ACTIONS(79), 1, anon_sym_RBRACE, - STATE(7), 1, - aux_sym_seq_repeat1, + STATE(3), 1, + aux_sym_control_inner_repeat1, STATE(11), 1, sym_comment, - STATE(26), 1, + STATE(28), 1, aux_sym_io_port_repeat1, - STATE(75), 1, + STATE(55), 1, sym_stmt, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, - STATE(185), 1, + STATE(179), 1, sym_static_annotation, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3654,7 +3668,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [668] = 20, + [671] = 20, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3679,21 +3693,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AT, ACTIONS(43), 1, sym_ident, - ACTIONS(85), 1, + ACTIONS(91), 1, anon_sym_RBRACE, + STATE(3), 1, + aux_sym_control_inner_repeat1, STATE(12), 1, sym_comment, - STATE(14), 1, - aux_sym_seq_repeat1, - STATE(26), 1, + STATE(28), 1, aux_sym_io_port_repeat1, - STATE(75), 1, + STATE(55), 1, sym_stmt, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, - STATE(185), 1, + STATE(179), 1, sym_static_annotation, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3701,7 +3715,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [735] = 20, + [738] = 20, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3726,21 +3740,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AT, ACTIONS(43), 1, sym_ident, - ACTIONS(87), 1, + ACTIONS(89), 1, anon_sym_RBRACE, - STATE(2), 1, - aux_sym_seq_repeat1, + STATE(3), 1, + aux_sym_control_inner_repeat1, STATE(13), 1, sym_comment, - STATE(26), 1, + STATE(28), 1, aux_sym_io_port_repeat1, - STATE(75), 1, + STATE(55), 1, sym_stmt, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, - STATE(185), 1, + STATE(179), 1, sym_static_annotation, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3748,7 +3762,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [802] = 20, + [805] = 20, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3773,21 +3787,21 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AT, ACTIONS(43), 1, sym_ident, - ACTIONS(89), 1, + ACTIONS(83), 1, anon_sym_RBRACE, - STATE(7), 1, - aux_sym_seq_repeat1, + STATE(13), 1, + aux_sym_control_inner_repeat1, STATE(14), 1, sym_comment, - STATE(26), 1, + STATE(28), 1, aux_sym_io_port_repeat1, - STATE(75), 1, + STATE(55), 1, sym_stmt, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, - STATE(185), 1, + STATE(179), 1, sym_static_annotation, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3795,7 +3809,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [869] = 19, + [872] = 20, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3808,31 +3822,80 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_seq, ACTIONS(31), 1, anon_sym_par, + ACTIONS(33), 1, + anon_sym_if, + ACTIONS(35), 1, + anon_sym_while, + ACTIONS(37), 1, + anon_sym_static, + ACTIONS(39), 1, + anon_sym_repeat, ACTIONS(41), 1, anon_sym_AT, ACTIONS(43), 1, sym_ident, - ACTIONS(91), 1, - anon_sym_if, ACTIONS(93), 1, + anon_sym_RBRACE, + STATE(7), 1, + aux_sym_control_inner_repeat1, + STATE(15), 1, + sym_comment, + STATE(28), 1, + aux_sym_io_port_repeat1, + STATE(55), 1, + sym_stmt, + STATE(86), 1, + sym_at_attribute, + STATE(179), 1, + sym_static_annotation, + STATE(56), 7, + sym_enable, + sym_invoke, + sym_seq, + sym_par, + sym_if_stmt, + sym_while_stmt, + sym_repeat_stmt, + [939] = 20, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(23), 1, + anon_sym_SEMI, + ACTIONS(27), 1, + anon_sym_invoke, + ACTIONS(29), 1, + anon_sym_seq, + ACTIONS(31), 1, + anon_sym_par, + ACTIONS(33), 1, + anon_sym_if, + ACTIONS(35), 1, anon_sym_while, - ACTIONS(95), 1, + ACTIONS(37), 1, anon_sym_static, - ACTIONS(97), 1, + ACTIONS(39), 1, anon_sym_repeat, - STATE(15), 1, + ACTIONS(41), 1, + anon_sym_AT, + ACTIONS(43), 1, + sym_ident, + ACTIONS(81), 1, + anon_sym_RBRACE, + STATE(11), 1, + aux_sym_control_inner_repeat1, + STATE(16), 1, sym_comment, - STATE(25), 1, + STATE(28), 1, aux_sym_io_port_repeat1, - STATE(79), 1, + STATE(55), 1, + sym_stmt, + STATE(86), 1, sym_at_attribute, - STATE(189), 1, + STATE(179), 1, sym_static_annotation, - STATE(357), 1, - sym_stmt, - STATE(394), 1, - sym_control_inner, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3840,7 +3903,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [933] = 18, + [1006] = 18, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3857,25 +3920,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AT, ACTIONS(43), 1, sym_ident, - ACTIONS(91), 1, + ACTIONS(95), 1, anon_sym_if, - ACTIONS(93), 1, + ACTIONS(97), 1, anon_sym_while, - ACTIONS(95), 1, + ACTIONS(99), 1, anon_sym_static, - ACTIONS(97), 1, + ACTIONS(101), 1, anon_sym_repeat, - STATE(16), 1, + STATE(17), 1, sym_comment, - STATE(25), 1, + STATE(30), 1, aux_sym_io_port_repeat1, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, STATE(189), 1, sym_static_annotation, - STATE(378), 1, + STATE(425), 1, sym_stmt, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3883,7 +3946,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [994] = 18, + [1067] = 18, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3900,25 +3963,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AT, ACTIONS(43), 1, sym_ident, - ACTIONS(91), 1, + ACTIONS(95), 1, anon_sym_if, - ACTIONS(93), 1, + ACTIONS(97), 1, anon_sym_while, - ACTIONS(95), 1, + ACTIONS(99), 1, anon_sym_static, - ACTIONS(97), 1, + ACTIONS(101), 1, anon_sym_repeat, - STATE(17), 1, + STATE(18), 1, sym_comment, - STATE(25), 1, + STATE(30), 1, aux_sym_io_port_repeat1, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, STATE(189), 1, sym_static_annotation, - STATE(421), 1, + STATE(381), 1, sym_stmt, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3926,7 +3989,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [1055] = 18, + [1128] = 18, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3943,25 +4006,25 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_AT, ACTIONS(43), 1, sym_ident, - ACTIONS(91), 1, + ACTIONS(95), 1, anon_sym_if, - ACTIONS(93), 1, + ACTIONS(97), 1, anon_sym_while, - ACTIONS(95), 1, + ACTIONS(99), 1, anon_sym_static, - ACTIONS(97), 1, + ACTIONS(101), 1, anon_sym_repeat, - STATE(18), 1, + STATE(19), 1, sym_comment, - STATE(25), 1, + STATE(30), 1, aux_sym_io_port_repeat1, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, STATE(189), 1, sym_static_annotation, - STATE(425), 1, + STATE(421), 1, sym_stmt, - STATE(45), 7, + STATE(56), 7, sym_enable, sym_invoke, sym_seq, @@ -3969,7 +4032,7 @@ static const uint16_t ts_small_parse_table[] = { sym_if_stmt, sym_while_stmt, sym_repeat_stmt, - [1116] = 19, + [1189] = 19, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -3988,19 +4051,19 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_extern, ACTIONS(21), 1, anon_sym_static, - ACTIONS(99), 1, + ACTIONS(103), 1, ts_builtin_sym_end, - STATE(19), 1, + STATE(20), 1, sym_comment, - STATE(22), 1, + STATE(24), 1, aux_sym_source_file_repeat2, - STATE(83), 1, + STATE(82), 1, aux_sym_source_file_repeat1, - STATE(117), 1, + STATE(113), 1, sym_import, - STATE(204), 1, + STATE(230), 1, sym_static_annotation, - STATE(260), 1, + STATE(261), 1, sym_comb_or_static, STATE(429), 1, sym_metadata, @@ -4010,31 +4073,42 @@ static const uint16_t ts_small_parse_table[] = { sym_component, sym_primitive, sym_extern, - [1176] = 5, + [1249] = 16, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(20), 1, + ACTIONS(105), 1, + anon_sym_RBRACE, + ACTIONS(107), 1, + anon_sym_comb, + ACTIONS(109), 1, + anon_sym_group, + ACTIONS(111), 1, + anon_sym_static, + ACTIONS(113), 1, + anon_sym_AT, + ACTIONS(115), 1, + sym_ident, + STATE(21), 1, sym_comment, - ACTIONS(103), 3, - anon_sym_EQ, - anon_sym_GT, - anon_sym_LT, - ACTIONS(101), 12, - anon_sym_SEMI, - anon_sym_LBRACE, - anon_sym_COMMA, - anon_sym_RPAREN, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_LT_EQ, - anon_sym_GT_EQ, - anon_sym_PIPE, - anon_sym_AMP, - anon_sym_QMARK, - anon_sym_with, - [1205] = 16, + STATE(25), 1, + aux_sym_wires_inner_repeat1, + STATE(199), 1, + sym_at_attribute, + STATE(327), 1, + sym_static_annotation, + STATE(329), 1, + sym_wires_inner, + STATE(339), 1, + sym_lhs, + STATE(155), 2, + sym_group, + sym_wire_assignment, + STATE(333), 2, + sym_hole, + sym_port, + [1300] = 16, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -4051,15 +4125,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_extern, ACTIONS(21), 1, anon_sym_static, - ACTIONS(99), 1, + ACTIONS(103), 1, ts_builtin_sym_end, - STATE(21), 1, + STATE(22), 1, sym_comment, - STATE(27), 1, + STATE(29), 1, aux_sym_source_file_repeat2, - STATE(204), 1, + STATE(230), 1, sym_static_annotation, - STATE(260), 1, + STATE(261), 1, sym_comb_or_static, STATE(429), 1, sym_metadata, @@ -4069,7 +4143,31 @@ static const uint16_t ts_small_parse_table[] = { sym_component, sym_primitive, sym_extern, - [1256] = 16, + [1351] = 5, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + STATE(23), 1, + sym_comment, + ACTIONS(119), 3, + anon_sym_EQ, + anon_sym_GT, + anon_sym_LT, + ACTIONS(117), 12, + anon_sym_SEMI, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_PIPE, + anon_sym_AMP, + anon_sym_QMARK, + anon_sym_with, + [1380] = 16, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -4086,15 +4184,15 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_extern, ACTIONS(21), 1, anon_sym_static, - ACTIONS(105), 1, + ACTIONS(121), 1, ts_builtin_sym_end, - STATE(22), 1, + STATE(24), 1, sym_comment, - STATE(27), 1, + STATE(29), 1, aux_sym_source_file_repeat2, - STATE(204), 1, + STATE(230), 1, sym_static_annotation, - STATE(260), 1, + STATE(261), 1, sym_comb_or_static, STATE(409), 1, sym_metadata, @@ -4104,22 +4202,55 @@ static const uint16_t ts_small_parse_table[] = { sym_component, sym_primitive, sym_extern, - [1307] = 7, + [1431] = 15, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(107), 1, + anon_sym_comb, ACTIONS(109), 1, - anon_sym_LBRACK, + anon_sym_group, + ACTIONS(111), 1, + anon_sym_static, ACTIONS(113), 1, + anon_sym_AT, + ACTIONS(115), 1, + sym_ident, + ACTIONS(123), 1, + anon_sym_RBRACE, + STATE(25), 1, + sym_comment, + STATE(27), 1, + aux_sym_wires_inner_repeat1, + STATE(199), 1, + sym_at_attribute, + STATE(327), 1, + sym_static_annotation, + STATE(339), 1, + sym_lhs, + STATE(155), 2, + sym_group, + sym_wire_assignment, + STATE(333), 2, + sym_hole, + sym_port, + [1479] = 7, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(127), 1, + anon_sym_LBRACK, + ACTIONS(131), 1, anon_sym_DOT, - STATE(23), 1, + STATE(26), 1, sym_comment, - ACTIONS(111), 3, + ACTIONS(129), 3, anon_sym_EQ, anon_sym_GT, anon_sym_LT, - ACTIONS(107), 9, + ACTIONS(125), 9, anon_sym_SEMI, anon_sym_RPAREN, anon_sym_EQ_EQ, @@ -4129,246 +4260,175 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_QMARK, - [1339] = 14, + [1511] = 14, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(115), 1, + ACTIONS(133), 1, anon_sym_RBRACE, - ACTIONS(117), 1, + ACTIONS(135), 1, anon_sym_comb, - ACTIONS(119), 1, + ACTIONS(138), 1, anon_sym_group, - ACTIONS(121), 1, + ACTIONS(141), 1, + anon_sym_static, + ACTIONS(144), 1, anon_sym_AT, - ACTIONS(123), 1, + ACTIONS(147), 1, sym_ident, - STATE(24), 1, - sym_comment, - STATE(40), 1, - aux_sym_wires_inner_repeat1, - STATE(197), 1, + STATE(199), 1, sym_at_attribute, - STATE(332), 1, + STATE(327), 1, + sym_static_annotation, + STATE(339), 1, sym_lhs, - STATE(335), 1, - sym_wires_inner, - STATE(156), 2, + STATE(27), 2, + sym_comment, + aux_sym_wires_inner_repeat1, + STATE(155), 2, sym_group, sym_wire_assignment, - STATE(334), 2, + STATE(333), 2, sym_hole, sym_port, - [1384] = 16, + [1557] = 16, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, ACTIONS(41), 1, anon_sym_AT, - ACTIONS(125), 1, + ACTIONS(150), 1, anon_sym_SEMI, - ACTIONS(127), 1, + ACTIONS(152), 1, anon_sym_invoke, - ACTIONS(129), 1, + ACTIONS(154), 1, anon_sym_seq, - ACTIONS(131), 1, + ACTIONS(156), 1, anon_sym_par, - ACTIONS(133), 1, + ACTIONS(158), 1, anon_sym_if, - ACTIONS(135), 1, + ACTIONS(160), 1, anon_sym_while, - ACTIONS(137), 1, + ACTIONS(162), 1, anon_sym_static, - ACTIONS(139), 1, + ACTIONS(164), 1, anon_sym_repeat, - ACTIONS(141), 1, + ACTIONS(166), 1, sym_ident, - STATE(25), 1, - sym_comment, STATE(28), 1, - aux_sym_io_port_repeat1, - STATE(79), 1, - sym_at_attribute, - STATE(196), 1, - sym_static_annotation, - [1433] = 16, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(41), 1, - anon_sym_AT, - ACTIONS(125), 1, - anon_sym_SEMI, - ACTIONS(127), 1, - anon_sym_invoke, - ACTIONS(129), 1, - anon_sym_seq, - ACTIONS(131), 1, - anon_sym_par, - ACTIONS(141), 1, - sym_ident, - ACTIONS(143), 1, - anon_sym_if, - ACTIONS(145), 1, - anon_sym_while, - ACTIONS(147), 1, - anon_sym_static, - ACTIONS(149), 1, - anon_sym_repeat, - STATE(26), 1, sym_comment, - STATE(28), 1, + STATE(41), 1, aux_sym_io_port_repeat1, - STATE(79), 1, + STATE(86), 1, sym_at_attribute, - STATE(194), 1, + STATE(200), 1, sym_static_annotation, - [1482] = 12, + [1606] = 12, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(153), 1, + ACTIONS(170), 1, anon_sym_component, - ACTIONS(156), 1, + ACTIONS(173), 1, anon_sym_comb, - ACTIONS(159), 1, + ACTIONS(176), 1, anon_sym_primitive, - ACTIONS(162), 1, + ACTIONS(179), 1, anon_sym_extern, - ACTIONS(165), 1, + ACTIONS(182), 1, anon_sym_static, - STATE(204), 1, + STATE(230), 1, sym_static_annotation, - STATE(260), 1, + STATE(261), 1, sym_comb_or_static, - ACTIONS(151), 2, + ACTIONS(168), 2, ts_builtin_sym_end, aux_sym_metadata_ci_token1, - STATE(27), 2, + STATE(29), 2, sym_comment, aux_sym_source_file_repeat2, STATE(140), 3, sym_component, sym_primitive, sym_extern, - [1523] = 7, + [1647] = 16, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(168), 1, - anon_sym_SEMI, - ACTIONS(172), 1, + ACTIONS(41), 1, anon_sym_AT, - STATE(79), 1, - sym_at_attribute, - STATE(28), 2, - sym_comment, - aux_sym_io_port_repeat1, - ACTIONS(170), 8, + ACTIONS(150), 1, + anon_sym_SEMI, + ACTIONS(152), 1, anon_sym_invoke, + ACTIONS(154), 1, anon_sym_seq, + ACTIONS(156), 1, anon_sym_par, + ACTIONS(166), 1, + sym_ident, + ACTIONS(185), 1, anon_sym_if, + ACTIONS(187), 1, anon_sym_while, + ACTIONS(189), 1, anon_sym_static, + ACTIONS(191), 1, anon_sym_repeat, - sym_ident, - [1553] = 12, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(175), 1, - anon_sym_LPAREN, - ACTIONS(177), 1, - anon_sym_BANG, - ACTIONS(179), 1, - sym_ident, - ACTIONS(181), 1, - sym_number, - STATE(29), 1, - sym_comment, - STATE(80), 1, - sym_expr, - STATE(422), 1, - sym_term, - STATE(434), 1, - sym_switch, - STATE(68), 2, - sym_base_expr, - sym_cmp_expr, - STATE(67), 3, - sym_hole, - sym_port, - sym_literal, - [1593] = 5, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, STATE(30), 1, sym_comment, - ACTIONS(185), 2, - anon_sym_GT, - anon_sym_LT, - ACTIONS(183), 10, - anon_sym_SEMI, - anon_sym_COMMA, - anon_sym_RPAREN, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_LT_EQ, - anon_sym_GT_EQ, - anon_sym_PIPE, - anon_sym_AMP, - anon_sym_QMARK, - [1619] = 12, + STATE(41), 1, + aux_sym_io_port_repeat1, + STATE(86), 1, + sym_at_attribute, + STATE(183), 1, + sym_static_annotation, + [1696] = 12, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(175), 1, + ACTIONS(193), 1, anon_sym_LPAREN, - ACTIONS(177), 1, + ACTIONS(195), 1, anon_sym_BANG, - ACTIONS(179), 1, + ACTIONS(197), 1, sym_ident, - ACTIONS(181), 1, + ACTIONS(199), 1, sym_number, STATE(31), 1, sym_comment, - STATE(84), 1, + STATE(83), 1, sym_expr, - STATE(398), 1, - sym_switch, - STATE(422), 1, + STATE(419), 1, sym_term, - STATE(68), 2, + STATE(420), 1, + sym_switch, + STATE(49), 2, sym_base_expr, sym_cmp_expr, - STATE(67), 3, + STATE(50), 3, sym_hole, sym_port, sym_literal, - [1659] = 6, + [1736] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(191), 1, + ACTIONS(205), 1, anon_sym_else, STATE(32), 1, sym_comment, - ACTIONS(187), 3, + ACTIONS(201), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(189), 8, + ACTIONS(203), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -4377,70 +4437,42 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [1687] = 12, + [1764] = 12, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(175), 1, + ACTIONS(193), 1, anon_sym_LPAREN, - ACTIONS(177), 1, + ACTIONS(195), 1, anon_sym_BANG, - ACTIONS(179), 1, + ACTIONS(197), 1, sym_ident, - ACTIONS(181), 1, + ACTIONS(199), 1, sym_number, STATE(33), 1, sym_comment, - STATE(82), 1, + STATE(81), 1, sym_expr, - STATE(420), 1, + STATE(418), 1, sym_switch, - STATE(422), 1, + STATE(419), 1, sym_term, - STATE(68), 2, + STATE(49), 2, sym_base_expr, sym_cmp_expr, - STATE(67), 3, + STATE(50), 3, sym_hole, sym_port, sym_literal, - [1727] = 12, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(193), 1, - anon_sym_RBRACE, - ACTIONS(195), 1, - anon_sym_comb, - ACTIONS(198), 1, - anon_sym_group, - ACTIONS(201), 1, - anon_sym_AT, - ACTIONS(204), 1, - sym_ident, - STATE(197), 1, - sym_at_attribute, - STATE(332), 1, - sym_lhs, - STATE(34), 2, - sym_comment, - aux_sym_wires_inner_repeat1, - STATE(156), 2, - sym_group, - sym_wire_assignment, - STATE(334), 2, - sym_hole, - sym_port, - [1767] = 6, + [1804] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, ACTIONS(211), 1, anon_sym_else, - STATE(35), 1, + STATE(34), 1, sym_comment, ACTIONS(207), 3, anon_sym_SEMI, @@ -4455,46 +4487,67 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [1795] = 12, + [1832] = 12, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(175), 1, + ACTIONS(193), 1, anon_sym_LPAREN, - ACTIONS(177), 1, + ACTIONS(195), 1, anon_sym_BANG, - ACTIONS(179), 1, + ACTIONS(197), 1, sym_ident, - ACTIONS(181), 1, + ACTIONS(199), 1, sym_number, - STATE(36), 1, + STATE(35), 1, sym_comment, - STATE(81), 1, + STATE(80), 1, sym_expr, - STATE(417), 1, - sym_switch, - STATE(422), 1, + STATE(419), 1, sym_term, - STATE(68), 2, + STATE(422), 1, + sym_switch, + STATE(49), 2, sym_base_expr, sym_cmp_expr, - STATE(67), 3, + STATE(50), 3, sym_hole, sym_port, sym_literal, - [1835] = 5, + [1872] = 5, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + STATE(36), 1, + sym_comment, + ACTIONS(215), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(213), 10, + anon_sym_SEMI, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_PIPE, + anon_sym_AMP, + anon_sym_QMARK, + [1898] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(37), 1, sym_comment, - ACTIONS(213), 3, + ACTIONS(217), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(215), 9, + ACTIONS(219), 9, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -4504,20 +4557,20 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [1861] = 6, + [1924] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(221), 1, + ACTIONS(225), 1, anon_sym_else, STATE(38), 1, sym_comment, - ACTIONS(217), 3, + ACTIONS(221), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(219), 8, + ACTIONS(223), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -4526,18 +4579,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [1889] = 5, + [1952] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(39), 1, sym_comment, - ACTIONS(225), 3, + ACTIONS(229), 3, anon_sym_EQ, anon_sym_GT, anon_sym_LT, - ACTIONS(223), 9, + ACTIONS(227), 9, anon_sym_SEMI, anon_sym_RPAREN, anon_sym_EQ_EQ, @@ -4547,47 +4600,48 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_QMARK, - [1915] = 13, + [1978] = 12, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(117), 1, - anon_sym_comb, - ACTIONS(119), 1, - anon_sym_group, - ACTIONS(121), 1, - anon_sym_AT, - ACTIONS(123), 1, + ACTIONS(193), 1, + anon_sym_LPAREN, + ACTIONS(195), 1, + anon_sym_BANG, + ACTIONS(197), 1, sym_ident, - ACTIONS(227), 1, - anon_sym_RBRACE, - STATE(34), 1, - aux_sym_wires_inner_repeat1, + ACTIONS(199), 1, + sym_number, STATE(40), 1, sym_comment, - STATE(197), 1, - sym_at_attribute, - STATE(332), 1, - sym_lhs, - STATE(156), 2, - sym_group, - sym_wire_assignment, - STATE(334), 2, + STATE(84), 1, + sym_expr, + STATE(398), 1, + sym_switch, + STATE(419), 1, + sym_term, + STATE(49), 2, + sym_base_expr, + sym_cmp_expr, + STATE(50), 3, sym_hole, sym_port, - [1957] = 6, + sym_literal, + [2018] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, ACTIONS(231), 1, - anon_sym_LPAREN, - STATE(41), 1, - sym_comment, - ACTIONS(229), 2, anon_sym_SEMI, + ACTIONS(235), 1, anon_sym_AT, + STATE(86), 1, + sym_at_attribute, + STATE(41), 2, + sym_comment, + aux_sym_io_port_repeat1, ACTIONS(233), 8, anon_sym_invoke, anon_sym_seq, @@ -4597,18 +4651,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [1984] = 5, + [2048] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(42), 1, sym_comment, - ACTIONS(235), 3, + ACTIONS(238), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(237), 8, + ACTIONS(240), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -4617,38 +4671,38 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2009] = 5, + [2073] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(43), 1, sym_comment, - ACTIONS(239), 3, + ACTIONS(244), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(242), 9, anon_sym_SEMI, - anon_sym_RBRACE, - anon_sym_AT, - ACTIONS(241), 8, - anon_sym_invoke, - anon_sym_seq, - anon_sym_par, - anon_sym_if, - anon_sym_while, - anon_sym_static, - anon_sym_repeat, - sym_ident, - [2034] = 5, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, + anon_sym_RPAREN, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_PIPE, + anon_sym_AMP, + anon_sym_QMARK, + [2098] = 5, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, STATE(44), 1, sym_comment, - ACTIONS(243), 3, + ACTIONS(246), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(245), 8, + ACTIONS(248), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -4657,18 +4711,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2059] = 5, + [2123] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(45), 1, sym_comment, - ACTIONS(247), 3, + ACTIONS(250), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(249), 8, + ACTIONS(252), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -4677,18 +4731,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2084] = 5, + [2148] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(46), 1, sym_comment, - ACTIONS(251), 3, + ACTIONS(254), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(253), 8, + ACTIONS(256), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -4697,18 +4751,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2109] = 5, + [2173] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(47), 1, sym_comment, - ACTIONS(213), 3, + ACTIONS(258), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(215), 8, + ACTIONS(260), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -4717,37 +4771,37 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2134] = 5, + [2198] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(48), 1, sym_comment, - ACTIONS(257), 2, - anon_sym_GT, - anon_sym_LT, - ACTIONS(255), 9, + ACTIONS(262), 3, anon_sym_SEMI, - anon_sym_RPAREN, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_LT_EQ, - anon_sym_GT_EQ, - anon_sym_PIPE, - anon_sym_AMP, - anon_sym_QMARK, - [2159] = 5, + anon_sym_RBRACE, + anon_sym_AT, + ACTIONS(264), 8, + anon_sym_invoke, + anon_sym_seq, + anon_sym_par, + anon_sym_if, + anon_sym_while, + anon_sym_static, + anon_sym_repeat, + sym_ident, + [2223] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(49), 1, sym_comment, - ACTIONS(261), 2, + ACTIONS(268), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(259), 9, + ACTIONS(266), 9, anon_sym_SEMI, anon_sym_RPAREN, anon_sym_EQ_EQ, @@ -4757,61 +4811,38 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_AMP, anon_sym_QMARK, - [2184] = 6, + [2248] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(263), 1, - anon_sym_EQ_EQ, STATE(50), 1, sym_comment, - ACTIONS(261), 2, + ACTIONS(272), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(259), 8, + ACTIONS(270), 9, anon_sym_SEMI, anon_sym_RPAREN, - anon_sym_BANG_EQ, - anon_sym_LT_EQ, - anon_sym_GT_EQ, - anon_sym_PIPE, - anon_sym_AMP, - anon_sym_QMARK, - [2211] = 7, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(263), 1, anon_sym_EQ_EQ, - ACTIONS(265), 1, anon_sym_BANG_EQ, - STATE(51), 1, - sym_comment, - ACTIONS(261), 2, - anon_sym_GT, - anon_sym_LT, - ACTIONS(259), 7, - anon_sym_SEMI, - anon_sym_RPAREN, anon_sym_LT_EQ, anon_sym_GT_EQ, anon_sym_PIPE, anon_sym_AMP, anon_sym_QMARK, - [2240] = 5, + [2273] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(52), 1, + STATE(51), 1, sym_comment, - ACTIONS(267), 3, + ACTIONS(274), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(269), 8, + ACTIONS(276), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -4820,90 +4851,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2265] = 8, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(263), 1, - anon_sym_EQ_EQ, - ACTIONS(265), 1, - anon_sym_BANG_EQ, - ACTIONS(271), 1, - anon_sym_LT_EQ, - STATE(53), 1, - sym_comment, - ACTIONS(261), 2, - anon_sym_GT, - anon_sym_LT, - ACTIONS(259), 6, - anon_sym_SEMI, - anon_sym_RPAREN, - anon_sym_GT_EQ, - anon_sym_PIPE, - anon_sym_AMP, - anon_sym_QMARK, - [2296] = 9, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(263), 1, - anon_sym_EQ_EQ, - ACTIONS(265), 1, - anon_sym_BANG_EQ, - ACTIONS(271), 1, - anon_sym_LT_EQ, - ACTIONS(273), 1, - anon_sym_GT_EQ, - STATE(54), 1, - sym_comment, - ACTIONS(261), 2, - anon_sym_GT, - anon_sym_LT, - ACTIONS(259), 5, - anon_sym_SEMI, - anon_sym_RPAREN, - anon_sym_PIPE, - anon_sym_AMP, - anon_sym_QMARK, - [2329] = 10, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(261), 1, - anon_sym_LT, - ACTIONS(263), 1, - anon_sym_EQ_EQ, - ACTIONS(265), 1, - anon_sym_BANG_EQ, - ACTIONS(271), 1, - anon_sym_LT_EQ, - ACTIONS(273), 1, - anon_sym_GT_EQ, - ACTIONS(275), 1, - anon_sym_GT, - STATE(55), 1, - sym_comment, - ACTIONS(259), 5, - anon_sym_SEMI, - anon_sym_RPAREN, - anon_sym_PIPE, - anon_sym_AMP, - anon_sym_QMARK, - [2364] = 5, + [2298] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(56), 1, + STATE(52), 1, sym_comment, - ACTIONS(277), 3, + ACTIONS(278), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(279), 8, + ACTIONS(280), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -4912,18 +4871,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2389] = 5, + [2323] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(57), 1, + STATE(53), 1, sym_comment, - ACTIONS(281), 3, + ACTIONS(282), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(283), 8, + ACTIONS(284), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -4932,18 +4891,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2414] = 5, + [2348] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(58), 1, + STATE(54), 1, sym_comment, - ACTIONS(285), 3, + ACTIONS(286), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(287), 8, + ACTIONS(288), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -4952,18 +4911,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2439] = 5, + [2373] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(59), 1, + STATE(55), 1, sym_comment, - ACTIONS(289), 3, + ACTIONS(290), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(291), 8, + ACTIONS(292), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -4972,18 +4931,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2464] = 5, + [2398] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(60), 1, + STATE(56), 1, sym_comment, - ACTIONS(293), 3, + ACTIONS(294), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(295), 8, + ACTIONS(296), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -4992,18 +4951,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2489] = 5, + [2423] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(61), 1, + STATE(57), 1, sym_comment, - ACTIONS(217), 3, + ACTIONS(298), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(219), 8, + ACTIONS(300), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5012,38 +4971,39 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2514] = 5, + [2448] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(62), 1, + STATE(58), 1, sym_comment, - ACTIONS(297), 3, + ACTIONS(304), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(302), 9, anon_sym_SEMI, - anon_sym_RBRACE, - anon_sym_AT, - ACTIONS(299), 8, - anon_sym_invoke, - anon_sym_seq, - anon_sym_par, - anon_sym_if, - anon_sym_while, - anon_sym_static, - anon_sym_repeat, - sym_ident, - [2539] = 5, + anon_sym_RPAREN, + anon_sym_EQ_EQ, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_PIPE, + anon_sym_AMP, + anon_sym_QMARK, + [2473] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(63), 1, + ACTIONS(308), 1, + anon_sym_LPAREN, + STATE(59), 1, sym_comment, - ACTIONS(301), 3, + ACTIONS(306), 2, anon_sym_SEMI, - anon_sym_RBRACE, anon_sym_AT, - ACTIONS(303), 8, + ACTIONS(310), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5052,58 +5012,61 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2564] = 5, + [2500] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(64), 1, + ACTIONS(312), 1, + anon_sym_EQ_EQ, + STATE(60), 1, sym_comment, - ACTIONS(305), 3, + ACTIONS(304), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(302), 8, anon_sym_SEMI, - anon_sym_RBRACE, - anon_sym_AT, - ACTIONS(307), 8, - anon_sym_invoke, - anon_sym_seq, - anon_sym_par, - anon_sym_if, - anon_sym_while, - anon_sym_static, - anon_sym_repeat, - sym_ident, - [2589] = 5, + anon_sym_RPAREN, + anon_sym_BANG_EQ, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_PIPE, + anon_sym_AMP, + anon_sym_QMARK, + [2527] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(65), 1, + ACTIONS(312), 1, + anon_sym_EQ_EQ, + ACTIONS(314), 1, + anon_sym_BANG_EQ, + STATE(61), 1, sym_comment, - ACTIONS(309), 3, + ACTIONS(304), 2, + anon_sym_GT, + anon_sym_LT, + ACTIONS(302), 7, anon_sym_SEMI, - anon_sym_RBRACE, - anon_sym_AT, - ACTIONS(311), 8, - anon_sym_invoke, - anon_sym_seq, - anon_sym_par, - anon_sym_if, - anon_sym_while, - anon_sym_static, - anon_sym_repeat, - sym_ident, - [2614] = 5, + anon_sym_RPAREN, + anon_sym_LT_EQ, + anon_sym_GT_EQ, + anon_sym_PIPE, + anon_sym_AMP, + anon_sym_QMARK, + [2556] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(66), 1, + STATE(62), 1, sym_comment, - ACTIONS(313), 3, + ACTIONS(217), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(315), 8, + ACTIONS(219), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5112,58 +5075,90 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2639] = 5, + [2581] = 8, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(67), 1, + ACTIONS(312), 1, + anon_sym_EQ_EQ, + ACTIONS(314), 1, + anon_sym_BANG_EQ, + ACTIONS(316), 1, + anon_sym_LT_EQ, + STATE(63), 1, sym_comment, - ACTIONS(319), 2, + ACTIONS(304), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(317), 9, + ACTIONS(302), 6, anon_sym_SEMI, anon_sym_RPAREN, - anon_sym_EQ_EQ, - anon_sym_BANG_EQ, - anon_sym_LT_EQ, anon_sym_GT_EQ, anon_sym_PIPE, anon_sym_AMP, anon_sym_QMARK, - [2664] = 5, + [2612] = 9, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(68), 1, + ACTIONS(312), 1, + anon_sym_EQ_EQ, + ACTIONS(314), 1, + anon_sym_BANG_EQ, + ACTIONS(316), 1, + anon_sym_LT_EQ, + ACTIONS(318), 1, + anon_sym_GT_EQ, + STATE(64), 1, sym_comment, - ACTIONS(323), 2, + ACTIONS(304), 2, anon_sym_GT, anon_sym_LT, - ACTIONS(321), 9, + ACTIONS(302), 5, anon_sym_SEMI, anon_sym_RPAREN, + anon_sym_PIPE, + anon_sym_AMP, + anon_sym_QMARK, + [2645] = 10, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(304), 1, + anon_sym_LT, + ACTIONS(312), 1, anon_sym_EQ_EQ, + ACTIONS(314), 1, anon_sym_BANG_EQ, + ACTIONS(316), 1, anon_sym_LT_EQ, + ACTIONS(318), 1, anon_sym_GT_EQ, + ACTIONS(320), 1, + anon_sym_GT, + STATE(65), 1, + sym_comment, + ACTIONS(302), 5, + anon_sym_SEMI, + anon_sym_RPAREN, anon_sym_PIPE, anon_sym_AMP, anon_sym_QMARK, - [2689] = 5, + [2680] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(69), 1, + STATE(66), 1, sym_comment, - ACTIONS(325), 3, + ACTIONS(322), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(327), 8, + ACTIONS(324), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5172,18 +5167,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2714] = 5, + [2705] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(70), 1, + STATE(67), 1, sym_comment, - ACTIONS(329), 3, + ACTIONS(221), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(331), 8, + ACTIONS(223), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5192,18 +5187,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2739] = 5, + [2730] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(71), 1, + STATE(68), 1, sym_comment, - ACTIONS(333), 3, + ACTIONS(326), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(335), 8, + ACTIONS(328), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5212,18 +5207,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2764] = 5, + [2755] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(72), 1, + STATE(69), 1, sym_comment, - ACTIONS(337), 3, + ACTIONS(330), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(339), 8, + ACTIONS(332), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5232,18 +5227,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2789] = 5, + [2780] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(73), 1, + STATE(70), 1, sym_comment, - ACTIONS(341), 3, + ACTIONS(334), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(343), 8, + ACTIONS(336), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5252,18 +5247,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2814] = 5, + [2805] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(74), 1, + STATE(71), 1, sym_comment, - ACTIONS(345), 3, + ACTIONS(338), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(347), 8, + ACTIONS(340), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5272,18 +5267,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2839] = 5, + [2830] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(75), 1, + STATE(72), 1, sym_comment, - ACTIONS(349), 3, + ACTIONS(342), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(351), 8, + ACTIONS(344), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5292,18 +5287,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2864] = 5, + [2855] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(76), 1, + STATE(73), 1, sym_comment, - ACTIONS(353), 3, + ACTIONS(346), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(355), 8, + ACTIONS(348), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5312,18 +5307,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2889] = 5, + [2880] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(77), 1, + STATE(74), 1, sym_comment, - ACTIONS(357), 3, + ACTIONS(350), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(359), 8, + ACTIONS(352), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5332,18 +5327,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2914] = 5, + [2905] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(78), 1, + STATE(75), 1, sym_comment, - ACTIONS(361), 3, + ACTIONS(354), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(363), 8, + ACTIONS(356), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5352,17 +5347,18 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2939] = 5, + [2930] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(79), 1, + STATE(76), 1, sym_comment, - ACTIONS(365), 2, + ACTIONS(358), 3, anon_sym_SEMI, + anon_sym_RBRACE, anon_sym_AT, - ACTIONS(367), 8, + ACTIONS(360), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5371,100 +5367,133 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [2963] = 13, + [2955] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(263), 1, - anon_sym_EQ_EQ, - ACTIONS(265), 1, - anon_sym_BANG_EQ, - ACTIONS(271), 1, - anon_sym_LT_EQ, - ACTIONS(273), 1, - anon_sym_GT_EQ, - ACTIONS(275), 1, - anon_sym_GT, - ACTIONS(369), 1, - anon_sym_SEMI, - ACTIONS(371), 1, - anon_sym_LT, - ACTIONS(373), 1, - anon_sym_PIPE, - ACTIONS(375), 1, - anon_sym_AMP, - ACTIONS(377), 1, - anon_sym_QMARK, - STATE(80), 1, + STATE(77), 1, sym_comment, - [3003] = 13, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(263), 1, + ACTIONS(362), 3, + anon_sym_SEMI, + anon_sym_RBRACE, + anon_sym_AT, + ACTIONS(364), 8, + anon_sym_invoke, + anon_sym_seq, + anon_sym_par, + anon_sym_if, + anon_sym_while, + anon_sym_static, + anon_sym_repeat, + sym_ident, + [2980] = 5, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + STATE(78), 1, + sym_comment, + ACTIONS(366), 3, + anon_sym_SEMI, + anon_sym_RBRACE, + anon_sym_AT, + ACTIONS(368), 8, + anon_sym_invoke, + anon_sym_seq, + anon_sym_par, + anon_sym_if, + anon_sym_while, + anon_sym_static, + anon_sym_repeat, + sym_ident, + [3005] = 5, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + STATE(79), 1, + sym_comment, + ACTIONS(370), 3, + anon_sym_SEMI, + anon_sym_RBRACE, + anon_sym_AT, + ACTIONS(372), 8, + anon_sym_invoke, + anon_sym_seq, + anon_sym_par, + anon_sym_if, + anon_sym_while, + anon_sym_static, + anon_sym_repeat, + sym_ident, + [3030] = 13, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(312), 1, anon_sym_EQ_EQ, - ACTIONS(265), 1, + ACTIONS(314), 1, anon_sym_BANG_EQ, - ACTIONS(271), 1, + ACTIONS(316), 1, anon_sym_LT_EQ, - ACTIONS(273), 1, + ACTIONS(318), 1, anon_sym_GT_EQ, - ACTIONS(275), 1, + ACTIONS(320), 1, anon_sym_GT, - ACTIONS(371), 1, + ACTIONS(374), 1, + anon_sym_SEMI, + ACTIONS(376), 1, anon_sym_LT, - ACTIONS(373), 1, + ACTIONS(378), 1, anon_sym_PIPE, - ACTIONS(375), 1, + ACTIONS(380), 1, anon_sym_AMP, - ACTIONS(377), 1, + ACTIONS(382), 1, anon_sym_QMARK, - ACTIONS(379), 1, - anon_sym_SEMI, - STATE(81), 1, + STATE(80), 1, sym_comment, - [3043] = 13, + [3070] = 13, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(263), 1, + ACTIONS(312), 1, anon_sym_EQ_EQ, - ACTIONS(265), 1, + ACTIONS(314), 1, anon_sym_BANG_EQ, - ACTIONS(271), 1, + ACTIONS(316), 1, anon_sym_LT_EQ, - ACTIONS(273), 1, + ACTIONS(318), 1, anon_sym_GT_EQ, - ACTIONS(275), 1, + ACTIONS(320), 1, anon_sym_GT, - ACTIONS(371), 1, + ACTIONS(376), 1, anon_sym_LT, - ACTIONS(373), 1, + ACTIONS(378), 1, anon_sym_PIPE, - ACTIONS(375), 1, + ACTIONS(380), 1, anon_sym_AMP, - ACTIONS(377), 1, + ACTIONS(382), 1, anon_sym_QMARK, - ACTIONS(381), 1, + ACTIONS(384), 1, anon_sym_SEMI, - STATE(82), 1, + STATE(81), 1, sym_comment, - [3083] = 6, + [3110] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(385), 1, + ACTIONS(388), 1, anon_sym_import, - STATE(117), 1, + STATE(113), 1, sym_import, - STATE(83), 2, + STATE(82), 2, sym_comment, aux_sym_source_file_repeat1, - ACTIONS(383), 7, + ACTIONS(386), 7, ts_builtin_sym_end, aux_sym_metadata_ci_token1, anon_sym_component, @@ -5472,44 +5501,71 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_primitive, anon_sym_extern, anon_sym_static, - [3109] = 13, + [3136] = 13, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(263), 1, + ACTIONS(312), 1, anon_sym_EQ_EQ, - ACTIONS(265), 1, + ACTIONS(314), 1, anon_sym_BANG_EQ, - ACTIONS(271), 1, + ACTIONS(316), 1, anon_sym_LT_EQ, - ACTIONS(273), 1, + ACTIONS(318), 1, anon_sym_GT_EQ, - ACTIONS(275), 1, + ACTIONS(320), 1, anon_sym_GT, - ACTIONS(371), 1, + ACTIONS(376), 1, anon_sym_LT, - ACTIONS(373), 1, + ACTIONS(378), 1, anon_sym_PIPE, - ACTIONS(375), 1, + ACTIONS(380), 1, anon_sym_AMP, - ACTIONS(377), 1, + ACTIONS(382), 1, anon_sym_QMARK, - ACTIONS(388), 1, + ACTIONS(391), 1, + anon_sym_SEMI, + STATE(83), 1, + sym_comment, + [3176] = 13, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(312), 1, + anon_sym_EQ_EQ, + ACTIONS(314), 1, + anon_sym_BANG_EQ, + ACTIONS(316), 1, + anon_sym_LT_EQ, + ACTIONS(318), 1, + anon_sym_GT_EQ, + ACTIONS(320), 1, + anon_sym_GT, + ACTIONS(376), 1, + anon_sym_LT, + ACTIONS(378), 1, + anon_sym_PIPE, + ACTIONS(380), 1, + anon_sym_AMP, + ACTIONS(382), 1, + anon_sym_QMARK, + ACTIONS(393), 1, anon_sym_SEMI, STATE(84), 1, sym_comment, - [3149] = 5, + [3216] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(85), 1, sym_comment, - ACTIONS(390), 2, + ACTIONS(395), 2, anon_sym_SEMI, anon_sym_AT, - ACTIONS(392), 8, + ACTIONS(397), 8, anon_sym_invoke, anon_sym_seq, anon_sym_par, @@ -5518,568 +5574,564 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_static, anon_sym_repeat, sym_ident, - [3173] = 10, + [3240] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(394), 1, - anon_sym_RBRACE, - ACTIONS(396), 1, - anon_sym_AT, - ACTIONS(399), 1, - sym_ident, - STATE(192), 1, - sym_at_attribute, - STATE(241), 1, - sym_wire_assignment, - STATE(447), 1, - sym_lhs, - STATE(86), 2, + STATE(86), 1, sym_comment, - aux_sym_group_repeat1, - STATE(334), 2, - sym_hole, - sym_port, - [3206] = 11, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(121), 1, + ACTIONS(399), 2, + anon_sym_SEMI, anon_sym_AT, - ACTIONS(179), 1, + ACTIONS(401), 8, + anon_sym_invoke, + anon_sym_seq, + anon_sym_par, + anon_sym_if, + anon_sym_while, + anon_sym_static, + anon_sym_repeat, sym_ident, - ACTIONS(402), 1, - anon_sym_RBRACE, - STATE(87), 1, - sym_comment, - STATE(107), 1, - aux_sym_group_repeat1, - STATE(192), 1, - sym_at_attribute, - STATE(241), 1, - sym_wire_assignment, - STATE(447), 1, - sym_lhs, - STATE(334), 2, - sym_hole, - sym_port, - [3241] = 11, + [3264] = 11, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, ACTIONS(21), 1, anon_sym_static, - ACTIONS(404), 1, + ACTIONS(403), 1, anon_sym_LBRACE, - ACTIONS(406), 1, + ACTIONS(405), 1, anon_sym_if, - ACTIONS(408), 1, + ACTIONS(407), 1, anon_sym_AT, - STATE(88), 1, + STATE(87), 1, sym_comment, - STATE(151), 1, + STATE(154), 1, aux_sym_io_port_repeat1, - STATE(246), 1, + STATE(212), 1, sym_at_attribute, - STATE(352), 1, + STATE(439), 1, sym_static_annotation, - STATE(59), 2, + STATE(67), 2, sym_block, sym_if_stmt, - [3276] = 9, + [3299] = 9, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(175), 1, + ACTIONS(193), 1, anon_sym_LPAREN, - ACTIONS(179), 1, + ACTIONS(197), 1, sym_ident, - ACTIONS(181), 1, + ACTIONS(199), 1, sym_number, - STATE(54), 1, + STATE(61), 1, sym_expr, - STATE(89), 1, + STATE(88), 1, sym_comment, - STATE(68), 2, + STATE(49), 2, sym_base_expr, sym_cmp_expr, - STATE(67), 3, + STATE(50), 3, sym_hole, sym_port, sym_literal, - [3307] = 9, + [3330] = 9, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(175), 1, + ACTIONS(193), 1, anon_sym_LPAREN, - ACTIONS(179), 1, + ACTIONS(197), 1, sym_ident, - ACTIONS(181), 1, + ACTIONS(199), 1, sym_number, - STATE(55), 1, - sym_expr, - STATE(90), 1, + STATE(89), 1, sym_comment, - STATE(68), 2, + STATE(139), 1, + sym_expr, + STATE(49), 2, sym_base_expr, sym_cmp_expr, - STATE(67), 3, + STATE(50), 3, sym_hole, sym_port, sym_literal, - [3338] = 9, + [3361] = 9, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(175), 1, + ACTIONS(193), 1, anon_sym_LPAREN, - ACTIONS(179), 1, + ACTIONS(197), 1, sym_ident, - ACTIONS(181), 1, + ACTIONS(199), 1, sym_number, - STATE(51), 1, - sym_expr, - STATE(91), 1, + STATE(90), 1, sym_comment, - STATE(68), 2, + STATE(138), 1, + sym_expr, + STATE(49), 2, sym_base_expr, sym_cmp_expr, - STATE(67), 3, + STATE(50), 3, sym_hole, sym_port, sym_literal, - [3369] = 9, + [3392] = 11, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(175), 1, - anon_sym_LPAREN, - ACTIONS(179), 1, + ACTIONS(113), 1, + anon_sym_AT, + ACTIONS(197), 1, sym_ident, - ACTIONS(181), 1, - sym_number, - STATE(92), 1, + ACTIONS(409), 1, + anon_sym_RBRACE, + STATE(91), 1, sym_comment, - STATE(143), 1, - sym_expr, - STATE(68), 2, - sym_base_expr, - sym_cmp_expr, - STATE(67), 3, + STATE(98), 1, + aux_sym_group_repeat1, + STATE(182), 1, + sym_at_attribute, + STATE(237), 1, + sym_wire_assignment, + STATE(447), 1, + sym_lhs, + STATE(333), 2, sym_hole, sym_port, - sym_literal, - [3400] = 11, + [3427] = 11, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(121), 1, + ACTIONS(21), 1, + anon_sym_static, + ACTIONS(407), 1, anon_sym_AT, - ACTIONS(179), 1, + ACTIONS(411), 1, + anon_sym_LBRACE, + ACTIONS(413), 1, + anon_sym_if, + STATE(92), 1, + sym_comment, + STATE(153), 1, + aux_sym_io_port_repeat1, + STATE(212), 1, + sym_at_attribute, + STATE(351), 1, + sym_static_annotation, + STATE(77), 2, + sym_block, + sym_if_stmt, + [3462] = 11, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(113), 1, + anon_sym_AT, + ACTIONS(197), 1, sym_ident, - ACTIONS(410), 1, + ACTIONS(415), 1, anon_sym_RBRACE, - STATE(86), 1, - aux_sym_group_repeat1, STATE(93), 1, sym_comment, - STATE(192), 1, + STATE(96), 1, + aux_sym_group_repeat1, + STATE(182), 1, sym_at_attribute, - STATE(241), 1, + STATE(237), 1, sym_wire_assignment, STATE(447), 1, sym_lhs, - STATE(334), 2, + STATE(333), 2, sym_hole, sym_port, - [3435] = 9, + [3497] = 9, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(175), 1, + ACTIONS(193), 1, anon_sym_LPAREN, - ACTIONS(179), 1, + ACTIONS(197), 1, sym_ident, - ACTIONS(181), 1, + ACTIONS(199), 1, sym_number, - STATE(50), 1, + STATE(58), 1, sym_expr, STATE(94), 1, sym_comment, - STATE(68), 2, + STATE(49), 2, sym_base_expr, sym_cmp_expr, - STATE(67), 3, + STATE(50), 3, sym_hole, sym_port, sym_literal, - [3466] = 11, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(21), 1, - anon_sym_static, - ACTIONS(408), 1, - anon_sym_AT, - ACTIONS(412), 1, - anon_sym_LBRACE, - ACTIONS(414), 1, - anon_sym_if, - STATE(95), 1, - sym_comment, - STATE(149), 1, - aux_sym_io_port_repeat1, - STATE(246), 1, - sym_at_attribute, - STATE(439), 1, - sym_static_annotation, - STATE(61), 2, - sym_block, - sym_if_stmt, - [3501] = 9, + [3528] = 9, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(175), 1, + ACTIONS(193), 1, anon_sym_LPAREN, - ACTIONS(179), 1, + ACTIONS(197), 1, sym_ident, - ACTIONS(181), 1, + ACTIONS(199), 1, sym_number, - STATE(96), 1, - sym_comment, - STATE(145), 1, + STATE(60), 1, sym_expr, - STATE(68), 2, + STATE(95), 1, + sym_comment, + STATE(49), 2, sym_base_expr, sym_cmp_expr, - STATE(67), 3, + STATE(50), 3, sym_hole, sym_port, sym_literal, - [3532] = 11, + [3559] = 11, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(21), 1, - anon_sym_static, - ACTIONS(404), 1, - anon_sym_LBRACE, - ACTIONS(406), 1, - anon_sym_if, - ACTIONS(408), 1, + ACTIONS(113), 1, anon_sym_AT, - STATE(97), 1, + ACTIONS(197), 1, + sym_ident, + ACTIONS(417), 1, + anon_sym_RBRACE, + STATE(96), 1, sym_comment, - STATE(151), 1, - aux_sym_io_port_repeat1, - STATE(246), 1, + STATE(98), 1, + aux_sym_group_repeat1, + STATE(182), 1, sym_at_attribute, - STATE(352), 1, - sym_static_annotation, - STATE(61), 2, - sym_block, - sym_if_stmt, - [3567] = 11, + STATE(237), 1, + sym_wire_assignment, + STATE(447), 1, + sym_lhs, + STATE(333), 2, + sym_hole, + sym_port, + [3594] = 11, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(21), 1, - anon_sym_static, - ACTIONS(408), 1, + ACTIONS(113), 1, anon_sym_AT, - ACTIONS(412), 1, - anon_sym_LBRACE, - ACTIONS(414), 1, - anon_sym_if, - STATE(98), 1, - sym_comment, - STATE(149), 1, - aux_sym_io_port_repeat1, - STATE(246), 1, - sym_at_attribute, - STATE(439), 1, - sym_static_annotation, - STATE(74), 2, - sym_block, - sym_if_stmt, - [3602] = 11, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(21), 1, - anon_sym_static, - ACTIONS(408), 1, - anon_sym_AT, - ACTIONS(412), 1, - anon_sym_LBRACE, - ACTIONS(414), 1, - anon_sym_if, - STATE(99), 1, + ACTIONS(197), 1, + sym_ident, + ACTIONS(409), 1, + anon_sym_RBRACE, + STATE(97), 1, sym_comment, - STATE(149), 1, - aux_sym_io_port_repeat1, - STATE(246), 1, + STATE(102), 1, + aux_sym_group_repeat1, + STATE(182), 1, sym_at_attribute, - STATE(439), 1, - sym_static_annotation, - STATE(59), 2, - sym_block, - sym_if_stmt, - [3637] = 11, + STATE(237), 1, + sym_wire_assignment, + STATE(447), 1, + sym_lhs, + STATE(333), 2, + sym_hole, + sym_port, + [3629] = 10, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(121), 1, + ACTIONS(419), 1, + anon_sym_RBRACE, + ACTIONS(421), 1, anon_sym_AT, - ACTIONS(179), 1, + ACTIONS(424), 1, sym_ident, - ACTIONS(416), 1, - anon_sym_RBRACE, - STATE(93), 1, - aux_sym_group_repeat1, - STATE(100), 1, - sym_comment, - STATE(192), 1, + STATE(182), 1, sym_at_attribute, - STATE(241), 1, + STATE(237), 1, sym_wire_assignment, STATE(447), 1, sym_lhs, - STATE(334), 2, + STATE(98), 2, + sym_comment, + aux_sym_group_repeat1, + STATE(333), 2, sym_hole, sym_port, - [3672] = 11, + [3662] = 11, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, ACTIONS(21), 1, anon_sym_static, - ACTIONS(404), 1, + ACTIONS(403), 1, anon_sym_LBRACE, - ACTIONS(406), 1, + ACTIONS(405), 1, anon_sym_if, - ACTIONS(408), 1, + ACTIONS(407), 1, anon_sym_AT, - STATE(101), 1, + STATE(99), 1, sym_comment, - STATE(151), 1, + STATE(154), 1, aux_sym_io_port_repeat1, - STATE(246), 1, + STATE(212), 1, sym_at_attribute, - STATE(352), 1, + STATE(439), 1, sym_static_annotation, - STATE(74), 2, + STATE(77), 2, sym_block, sym_if_stmt, - [3707] = 11, + [3697] = 9, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(121), 1, - anon_sym_AT, - ACTIONS(179), 1, + ACTIONS(193), 1, + anon_sym_LPAREN, + ACTIONS(197), 1, sym_ident, - ACTIONS(402), 1, - anon_sym_RBRACE, - STATE(86), 1, - aux_sym_group_repeat1, - STATE(102), 1, + ACTIONS(199), 1, + sym_number, + STATE(63), 1, + sym_expr, + STATE(100), 1, sym_comment, - STATE(192), 1, - sym_at_attribute, - STATE(241), 1, - sym_wire_assignment, - STATE(447), 1, - sym_lhs, - STATE(334), 2, + STATE(49), 2, + sym_base_expr, + sym_cmp_expr, + STATE(50), 3, sym_hole, sym_port, - [3742] = 11, + sym_literal, + [3728] = 9, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(121), 1, + ACTIONS(193), 1, + anon_sym_LPAREN, + ACTIONS(197), 1, + sym_ident, + ACTIONS(199), 1, + sym_number, + STATE(64), 1, + sym_expr, + STATE(101), 1, + sym_comment, + STATE(49), 2, + sym_base_expr, + sym_cmp_expr, + STATE(50), 3, + sym_hole, + sym_port, + sym_literal, + [3759] = 11, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(113), 1, anon_sym_AT, - ACTIONS(179), 1, + ACTIONS(197), 1, sym_ident, - ACTIONS(410), 1, + ACTIONS(427), 1, anon_sym_RBRACE, - STATE(102), 1, + STATE(98), 1, aux_sym_group_repeat1, - STATE(103), 1, + STATE(102), 1, sym_comment, - STATE(192), 1, + STATE(182), 1, sym_at_attribute, - STATE(241), 1, + STATE(237), 1, sym_wire_assignment, STATE(447), 1, sym_lhs, - STATE(334), 2, + STATE(333), 2, sym_hole, sym_port, - [3777] = 9, + [3794] = 9, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(175), 1, + ACTIONS(193), 1, anon_sym_LPAREN, - ACTIONS(179), 1, + ACTIONS(197), 1, sym_ident, - ACTIONS(181), 1, + ACTIONS(199), 1, sym_number, - STATE(53), 1, + STATE(65), 1, sym_expr, - STATE(104), 1, + STATE(103), 1, sym_comment, - STATE(68), 2, + STATE(49), 2, sym_base_expr, sym_cmp_expr, - STATE(67), 3, + STATE(50), 3, sym_hole, sym_port, sym_literal, - [3808] = 9, + [3825] = 9, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(175), 1, + ACTIONS(193), 1, anon_sym_LPAREN, - ACTIONS(179), 1, + ACTIONS(197), 1, sym_ident, - ACTIONS(181), 1, + ACTIONS(199), 1, sym_number, - STATE(105), 1, + STATE(104), 1, sym_comment, - STATE(124), 1, + STATE(144), 1, sym_expr, - STATE(68), 2, + STATE(49), 2, sym_base_expr, sym_cmp_expr, - STATE(67), 3, + STATE(50), 3, sym_hole, sym_port, sym_literal, - [3839] = 9, + [3856] = 9, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(175), 1, + ACTIONS(193), 1, anon_sym_LPAREN, - ACTIONS(179), 1, + ACTIONS(197), 1, sym_ident, - ACTIONS(181), 1, + ACTIONS(199), 1, sym_number, - STATE(106), 1, + STATE(105), 1, sym_comment, - STATE(127), 1, + STATE(143), 1, sym_expr, - STATE(68), 2, + STATE(49), 2, sym_base_expr, sym_cmp_expr, - STATE(67), 3, + STATE(50), 3, sym_hole, sym_port, sym_literal, - [3870] = 11, + [3887] = 11, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(121), 1, + ACTIONS(21), 1, + anon_sym_static, + ACTIONS(407), 1, anon_sym_AT, - ACTIONS(179), 1, + ACTIONS(411), 1, + anon_sym_LBRACE, + ACTIONS(413), 1, + anon_sym_if, + STATE(106), 1, + sym_comment, + STATE(153), 1, + aux_sym_io_port_repeat1, + STATE(212), 1, + sym_at_attribute, + STATE(351), 1, + sym_static_annotation, + STATE(75), 2, + sym_block, + sym_if_stmt, + [3922] = 11, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(113), 1, + anon_sym_AT, + ACTIONS(197), 1, sym_ident, - ACTIONS(418), 1, + ACTIONS(417), 1, anon_sym_RBRACE, - STATE(86), 1, + STATE(91), 1, aux_sym_group_repeat1, STATE(107), 1, sym_comment, - STATE(192), 1, + STATE(182), 1, sym_at_attribute, - STATE(241), 1, + STATE(237), 1, sym_wire_assignment, STATE(447), 1, sym_lhs, - STATE(334), 2, + STATE(333), 2, sym_hole, sym_port, - [3905] = 9, + [3957] = 11, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(175), 1, - anon_sym_LPAREN, - ACTIONS(179), 1, - sym_ident, - ACTIONS(181), 1, - sym_number, - STATE(49), 1, - sym_expr, + ACTIONS(21), 1, + anon_sym_static, + ACTIONS(403), 1, + anon_sym_LBRACE, + ACTIONS(405), 1, + anon_sym_if, + ACTIONS(407), 1, + anon_sym_AT, STATE(108), 1, sym_comment, - STATE(68), 2, - sym_base_expr, - sym_cmp_expr, - STATE(67), 3, - sym_hole, - sym_port, - sym_literal, - [3936] = 11, + STATE(154), 1, + aux_sym_io_port_repeat1, + STATE(212), 1, + sym_at_attribute, + STATE(439), 1, + sym_static_annotation, + STATE(75), 2, + sym_block, + sym_if_stmt, + [3992] = 11, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(15), 1, - anon_sym_comb, - ACTIONS(17), 1, - anon_sym_primitive, ACTIONS(21), 1, anon_sym_static, - ACTIONS(420), 1, - anon_sym_RBRACE, + ACTIONS(407), 1, + anon_sym_AT, + ACTIONS(411), 1, + anon_sym_LBRACE, + ACTIONS(413), 1, + anon_sym_if, STATE(109), 1, sym_comment, - STATE(118), 1, - aux_sym_extern_repeat1, - STATE(198), 1, - sym_primitive, - STATE(204), 1, + STATE(153), 1, + aux_sym_io_port_repeat1, + STATE(212), 1, + sym_at_attribute, + STATE(351), 1, sym_static_annotation, - STATE(396), 1, - sym_comb_or_static, - [3970] = 4, + STATE(67), 2, + sym_block, + sym_if_stmt, + [4027] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(110), 1, sym_comment, - ACTIONS(422), 8, + ACTIONS(429), 8, ts_builtin_sym_end, aux_sym_metadata_ci_token1, anon_sym_component, @@ -6088,37 +6140,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_primitive, anon_sym_extern, anon_sym_static, - [3990] = 11, + [4047] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(424), 1, - anon_sym_RBRACE, - ACTIONS(426), 1, - anon_sym_ref, - ACTIONS(428), 1, - anon_sym_AT, - ACTIONS(430), 1, - sym_ident, STATE(111), 1, sym_comment, - STATE(146), 1, - aux_sym_cells_inner_repeat1, - STATE(182), 1, - sym_cell_assignment, - STATE(321), 1, - sym_at_attribute, - STATE(338), 1, - sym_cells_inner, - [4024] = 4, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - STATE(112), 1, - sym_comment, - ACTIONS(432), 8, + ACTIONS(431), 8, ts_builtin_sym_end, aux_sym_metadata_ci_token1, anon_sym_component, @@ -6127,14 +6156,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_primitive, anon_sym_extern, anon_sym_static, - [4044] = 4, + [4067] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(113), 1, + STATE(112), 1, sym_comment, - ACTIONS(434), 8, + ACTIONS(433), 8, ts_builtin_sym_end, aux_sym_metadata_ci_token1, anon_sym_component, @@ -6143,14 +6172,14 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_primitive, anon_sym_extern, anon_sym_static, - [4064] = 4, + [4087] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(114), 1, + STATE(113), 1, sym_comment, - ACTIONS(436), 8, + ACTIONS(435), 8, ts_builtin_sym_end, anon_sym_import, aux_sym_metadata_ci_token1, @@ -6159,52 +6188,114 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_primitive, anon_sym_extern, anon_sym_static, - [4084] = 4, + [4107] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(115), 1, + STATE(114), 1, sym_comment, - ACTIONS(438), 8, - ts_builtin_sym_end, - aux_sym_metadata_ci_token1, + ACTIONS(437), 8, anon_sym_component, - anon_sym_RBRACE, anon_sym_comb, anon_sym_primitive, - anon_sym_extern, - anon_sym_static, - [4104] = 10, + anon_sym_group, + anon_sym_invoke, + anon_sym_seq, + anon_sym_par, + anon_sym_if, + [4127] = 11, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(440), 1, - anon_sym_RBRACE, - ACTIONS(442), 1, + ACTIONS(15), 1, anon_sym_comb, - ACTIONS(445), 1, + ACTIONS(17), 1, anon_sym_primitive, - ACTIONS(448), 1, + ACTIONS(21), 1, anon_sym_static, - STATE(198), 1, + ACTIONS(439), 1, + anon_sym_RBRACE, + STATE(115), 1, + sym_comment, + STATE(120), 1, + aux_sym_extern_repeat1, + STATE(178), 1, sym_primitive, - STATE(204), 1, + STATE(230), 1, sym_static_annotation, - STATE(396), 1, + STATE(390), 1, sym_comb_or_static, - STATE(116), 2, + [4161] = 10, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(441), 1, + anon_sym_RBRACE, + ACTIONS(443), 1, + anon_sym_comb, + ACTIONS(446), 1, + anon_sym_primitive, + ACTIONS(449), 1, + anon_sym_static, + STATE(178), 1, + sym_primitive, + STATE(230), 1, + sym_static_annotation, + STATE(390), 1, + sym_comb_or_static, + STATE(116), 2, sym_comment, aux_sym_extern_repeat1, - [4136] = 4, + [4193] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(117), 1, sym_comment, - ACTIONS(451), 8, + ACTIONS(452), 8, + anon_sym_component, + anon_sym_comb, + anon_sym_primitive, + anon_sym_group, + anon_sym_invoke, + anon_sym_seq, + anon_sym_par, + anon_sym_if, + [4213] = 11, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(454), 1, + anon_sym_RBRACE, + ACTIONS(456), 1, + anon_sym_ref, + ACTIONS(458), 1, + anon_sym_AT, + ACTIONS(460), 1, + sym_ident, + STATE(118), 1, + sym_comment, + STATE(124), 1, + aux_sym_cells_inner_repeat1, + STATE(177), 1, + sym_cell_assignment, + STATE(324), 1, + sym_at_attribute, + STATE(330), 1, + sym_cells_inner, + [4247] = 4, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + STATE(119), 1, + sym_comment, + ACTIONS(462), 8, ts_builtin_sym_end, anon_sym_import, aux_sym_metadata_ci_token1, @@ -6213,7 +6304,7 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_primitive, anon_sym_extern, anon_sym_static, - [4156] = 11, + [4267] = 11, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -6224,26 +6315,26 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_primitive, ACTIONS(21), 1, anon_sym_static, - ACTIONS(453), 1, + ACTIONS(464), 1, anon_sym_RBRACE, STATE(116), 1, aux_sym_extern_repeat1, - STATE(118), 1, + STATE(120), 1, sym_comment, - STATE(198), 1, + STATE(178), 1, sym_primitive, - STATE(204), 1, + STATE(230), 1, sym_static_annotation, - STATE(396), 1, + STATE(390), 1, sym_comb_or_static, - [4190] = 4, + [4301] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(119), 1, + STATE(121), 1, sym_comment, - ACTIONS(455), 8, + ACTIONS(466), 8, ts_builtin_sym_end, aux_sym_metadata_ci_token1, anon_sym_component, @@ -6252,50 +6343,66 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_primitive, anon_sym_extern, anon_sym_static, - [4210] = 4, + [4321] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(120), 1, + STATE(122), 1, sym_comment, - ACTIONS(457), 7, + ACTIONS(468), 8, ts_builtin_sym_end, aux_sym_metadata_ci_token1, anon_sym_component, + anon_sym_RBRACE, anon_sym_comb, anon_sym_primitive, anon_sym_extern, anon_sym_static, - [4229] = 10, + [4341] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(121), 1, + STATE(123), 1, + sym_comment, + ACTIONS(470), 7, + ts_builtin_sym_end, + aux_sym_metadata_ci_token1, + anon_sym_component, + anon_sym_comb, + anon_sym_primitive, + anon_sym_extern, + anon_sym_static, + [4360] = 10, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(456), 1, + anon_sym_ref, + ACTIONS(458), 1, anon_sym_AT, - ACTIONS(459), 1, - anon_sym_RPAREN, - ACTIONS(461), 1, + ACTIONS(460), 1, sym_ident, - STATE(121), 1, + ACTIONS(472), 1, + anon_sym_RBRACE, + STATE(124), 1, sym_comment, - STATE(135), 1, - aux_sym_io_port_list_repeat1, - STATE(187), 1, - aux_sym_io_port_repeat1, - STATE(276), 1, - sym_io_port, - STATE(277), 1, + STATE(133), 1, + aux_sym_cells_inner_repeat1, + STATE(177), 1, + sym_cell_assignment, + STATE(324), 1, sym_at_attribute, - [4260] = 4, + [4391] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(122), 1, + STATE(125), 1, sym_comment, - ACTIONS(463), 7, + ACTIONS(474), 7, ts_builtin_sym_end, aux_sym_metadata_ci_token1, anon_sym_component, @@ -6303,14 +6410,35 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_primitive, anon_sym_extern, anon_sym_static, - [4279] = 4, + [4410] = 10, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(123), 1, + ACTIONS(476), 1, + anon_sym_RBRACE, + ACTIONS(478), 1, + anon_sym_cells, + ACTIONS(480), 1, + anon_sym_wires, + ACTIONS(482), 1, + anon_sym_control, + STATE(126), 1, + sym_comment, + STATE(164), 1, + sym_cells, + STATE(208), 1, + sym_wires, + STATE(367), 1, + sym_control, + [4441] = 4, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + STATE(127), 1, sym_comment, - ACTIONS(465), 7, + ACTIONS(484), 7, ts_builtin_sym_end, aux_sym_metadata_ci_token1, anon_sym_component, @@ -6318,128 +6446,89 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_primitive, anon_sym_extern, anon_sym_static, - [4298] = 10, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(263), 1, - anon_sym_EQ_EQ, - ACTIONS(265), 1, - anon_sym_BANG_EQ, - ACTIONS(271), 1, - anon_sym_LT_EQ, - ACTIONS(273), 1, - anon_sym_GT_EQ, - ACTIONS(275), 1, - anon_sym_GT, - ACTIONS(371), 1, - anon_sym_LT, - ACTIONS(467), 1, - anon_sym_QMARK, - STATE(124), 1, - sym_comment, - [4329] = 4, + [4460] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(125), 1, + STATE(128), 1, sym_comment, - ACTIONS(469), 7, + ACTIONS(486), 7, + ts_builtin_sym_end, + aux_sym_metadata_ci_token1, anon_sym_component, anon_sym_comb, anon_sym_primitive, - anon_sym_invoke, - anon_sym_seq, - anon_sym_par, - anon_sym_if, - [4348] = 7, + anon_sym_extern, + anon_sym_static, + [4479] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(471), 1, + ACTIONS(488), 1, anon_sym_LT, - ACTIONS(475), 1, + ACTIONS(492), 1, anon_sym_repeat, - STATE(126), 1, - sym_comment, - STATE(132), 1, + STATE(114), 1, sym_latency_annotation, - ACTIONS(473), 4, + STATE(129), 1, + sym_comment, + ACTIONS(490), 4, anon_sym_invoke, anon_sym_seq, anon_sym_par, anon_sym_if, - [4373] = 10, + [4504] = 10, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(263), 1, - anon_sym_EQ_EQ, - ACTIONS(265), 1, - anon_sym_BANG_EQ, - ACTIONS(271), 1, - anon_sym_LT_EQ, - ACTIONS(273), 1, - anon_sym_GT_EQ, - ACTIONS(275), 1, - anon_sym_GT, - ACTIONS(371), 1, - anon_sym_LT, - ACTIONS(477), 1, - anon_sym_QMARK, - STATE(127), 1, - sym_comment, - [4404] = 7, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(471), 1, - anon_sym_LT, - ACTIONS(479), 1, - anon_sym_repeat, - STATE(128), 1, + ACTIONS(113), 1, + anon_sym_AT, + ACTIONS(494), 1, + anon_sym_RPAREN, + ACTIONS(496), 1, + sym_ident, + STATE(130), 1, sym_comment, - STATE(132), 1, - sym_latency_annotation, - ACTIONS(473), 4, - anon_sym_invoke, - anon_sym_seq, - anon_sym_par, - anon_sym_if, - [4429] = 10, + STATE(131), 1, + aux_sym_io_port_list_repeat1, + STATE(195), 1, + aux_sym_io_port_repeat1, + STATE(280), 1, + sym_io_port, + STATE(281), 1, + sym_at_attribute, + [4535] = 10, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(481), 1, - anon_sym_RBRACE, - ACTIONS(483), 1, - anon_sym_cells, - ACTIONS(485), 1, - anon_sym_wires, - ACTIONS(487), 1, - anon_sym_control, - STATE(129), 1, + ACTIONS(113), 1, + anon_sym_AT, + ACTIONS(496), 1, + sym_ident, + ACTIONS(498), 1, + anon_sym_RPAREN, + STATE(131), 1, sym_comment, - STATE(153), 1, - sym_cells, - STATE(232), 1, - sym_wires, - STATE(379), 1, - sym_control, - [4460] = 4, + STATE(146), 1, + aux_sym_io_port_list_repeat1, + STATE(195), 1, + aux_sym_io_port_repeat1, + STATE(281), 1, + sym_at_attribute, + STATE(299), 1, + sym_io_port, + [4566] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(130), 1, + STATE(132), 1, sym_comment, - ACTIONS(489), 7, + ACTIONS(500), 7, ts_builtin_sym_end, aux_sym_metadata_ci_token1, anon_sym_component, @@ -6447,71 +6536,55 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_primitive, anon_sym_extern, anon_sym_static, - [4479] = 10, + [4585] = 9, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(502), 1, + anon_sym_RBRACE, + ACTIONS(504), 1, + anon_sym_ref, + ACTIONS(507), 1, + anon_sym_AT, + ACTIONS(510), 1, + sym_ident, + STATE(177), 1, + sym_cell_assignment, + STATE(324), 1, + sym_at_attribute, + STATE(133), 2, + sym_comment, + aux_sym_cells_inner_repeat1, + [4614] = 10, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(491), 1, + ACTIONS(513), 1, anon_sym_LPAREN, - ACTIONS(493), 1, + ACTIONS(515), 1, anon_sym_LBRACK, - ACTIONS(495), 1, + ACTIONS(517), 1, anon_sym_LT, - STATE(131), 1, + STATE(134), 1, sym_comment, - STATE(155), 1, + STATE(171), 1, sym_attributes, - STATE(249), 1, - sym_params, - STATE(250), 1, + STATE(232), 1, sym_signature, - STATE(412), 1, + STATE(235), 1, + sym_params, + STATE(413), 1, sym_io_port_list, - [4510] = 4, + [4645] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(132), 1, - sym_comment, - ACTIONS(497), 7, - anon_sym_component, - anon_sym_comb, - anon_sym_primitive, - anon_sym_invoke, - anon_sym_seq, - anon_sym_par, - anon_sym_if, - [4529] = 10, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(483), 1, - anon_sym_cells, - ACTIONS(485), 1, - anon_sym_wires, - ACTIONS(487), 1, - anon_sym_control, - ACTIONS(499), 1, - anon_sym_RBRACE, - STATE(133), 1, - sym_comment, - STATE(165), 1, - sym_cells, - STATE(224), 1, - sym_wires, - STATE(353), 1, - sym_control, - [4560] = 4, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - STATE(134), 1, + STATE(135), 1, sym_comment, - ACTIONS(501), 7, + ACTIONS(519), 7, ts_builtin_sym_end, aux_sym_metadata_ci_token1, anon_sym_component, @@ -6519,109 +6592,91 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_primitive, anon_sym_extern, anon_sym_static, - [4579] = 10, + [4664] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(121), 1, - anon_sym_AT, - ACTIONS(461), 1, - sym_ident, - ACTIONS(503), 1, - anon_sym_RPAREN, - STATE(135), 1, + ACTIONS(488), 1, + anon_sym_LT, + STATE(114), 1, + sym_latency_annotation, + STATE(136), 1, sym_comment, - STATE(138), 1, - aux_sym_io_port_list_repeat1, - STATE(187), 1, - aux_sym_io_port_repeat1, - STATE(277), 1, - sym_at_attribute, - STATE(286), 1, - sym_io_port, - [4610] = 7, + ACTIONS(490), 5, + anon_sym_component, + anon_sym_comb, + anon_sym_primitive, + anon_sym_group, + anon_sym_if, + [4687] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(471), 1, + ACTIONS(488), 1, anon_sym_LT, - ACTIONS(505), 1, + ACTIONS(521), 1, anon_sym_repeat, - STATE(132), 1, + STATE(114), 1, sym_latency_annotation, - STATE(136), 1, + STATE(137), 1, sym_comment, - ACTIONS(473), 4, + ACTIONS(490), 4, anon_sym_invoke, anon_sym_seq, anon_sym_par, anon_sym_if, - [4635] = 4, + [4712] = 10, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(137), 1, - sym_comment, - ACTIONS(507), 7, - ts_builtin_sym_end, - aux_sym_metadata_ci_token1, - anon_sym_component, - anon_sym_comb, - anon_sym_primitive, - anon_sym_extern, - anon_sym_static, - [4654] = 9, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(509), 1, + ACTIONS(312), 1, + anon_sym_EQ_EQ, + ACTIONS(314), 1, + anon_sym_BANG_EQ, + ACTIONS(316), 1, + anon_sym_LT_EQ, + ACTIONS(318), 1, + anon_sym_GT_EQ, + ACTIONS(320), 1, + anon_sym_GT, + ACTIONS(376), 1, + anon_sym_LT, + ACTIONS(523), 1, anon_sym_RPAREN, - ACTIONS(511), 1, - anon_sym_AT, - ACTIONS(514), 1, - sym_ident, - STATE(187), 1, - aux_sym_io_port_repeat1, - STATE(277), 1, - sym_at_attribute, - STATE(355), 1, - sym_io_port, - STATE(138), 2, + STATE(138), 1, sym_comment, - aux_sym_io_port_list_repeat1, - [4683] = 10, + [4743] = 10, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(483), 1, - anon_sym_cells, - ACTIONS(485), 1, - anon_sym_wires, - ACTIONS(487), 1, - anon_sym_control, - ACTIONS(517), 1, - anon_sym_RBRACE, + ACTIONS(312), 1, + anon_sym_EQ_EQ, + ACTIONS(314), 1, + anon_sym_BANG_EQ, + ACTIONS(316), 1, + anon_sym_LT_EQ, + ACTIONS(318), 1, + anon_sym_GT_EQ, + ACTIONS(320), 1, + anon_sym_GT, + ACTIONS(376), 1, + anon_sym_LT, + ACTIONS(525), 1, + anon_sym_QMARK, STATE(139), 1, sym_comment, - STATE(170), 1, - sym_cells, - STATE(208), 1, - sym_wires, - STATE(360), 1, - sym_control, - [4714] = 4, + [4774] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(140), 1, sym_comment, - ACTIONS(519), 7, + ACTIONS(527), 7, ts_builtin_sym_end, aux_sym_metadata_ci_token1, anon_sym_component, @@ -6629,70 +6684,136 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_primitive, anon_sym_extern, anon_sym_static, - [4733] = 9, + [4793] = 10, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(521), 1, - anon_sym_RBRACE, - ACTIONS(523), 1, - anon_sym_ref, - ACTIONS(526), 1, - anon_sym_AT, + ACTIONS(478), 1, + anon_sym_cells, + ACTIONS(480), 1, + anon_sym_wires, + ACTIONS(482), 1, + anon_sym_control, ACTIONS(529), 1, - sym_ident, - STATE(182), 1, - sym_cell_assignment, - STATE(321), 1, - sym_at_attribute, - STATE(141), 2, + anon_sym_RBRACE, + STATE(141), 1, sym_comment, - aux_sym_cells_inner_repeat1, - [4762] = 4, + STATE(166), 1, + sym_cells, + STATE(247), 1, + sym_wires, + STATE(362), 1, + sym_control, + [4824] = 10, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(478), 1, + anon_sym_cells, + ACTIONS(480), 1, + anon_sym_wires, + ACTIONS(482), 1, + anon_sym_control, + ACTIONS(531), 1, + anon_sym_RBRACE, STATE(142), 1, sym_comment, - ACTIONS(532), 7, - ts_builtin_sym_end, - aux_sym_metadata_ci_token1, - anon_sym_component, - anon_sym_comb, - anon_sym_primitive, - anon_sym_extern, - anon_sym_static, - [4781] = 10, + STATE(167), 1, + sym_cells, + STATE(246), 1, + sym_wires, + STATE(347), 1, + sym_control, + [4855] = 10, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(263), 1, + ACTIONS(312), 1, anon_sym_EQ_EQ, - ACTIONS(265), 1, + ACTIONS(314), 1, anon_sym_BANG_EQ, - ACTIONS(271), 1, + ACTIONS(316), 1, anon_sym_LT_EQ, - ACTIONS(273), 1, + ACTIONS(318), 1, anon_sym_GT_EQ, - ACTIONS(275), 1, + ACTIONS(320), 1, anon_sym_GT, - ACTIONS(371), 1, + ACTIONS(376), 1, anon_sym_LT, - ACTIONS(477), 1, + ACTIONS(533), 1, anon_sym_QMARK, STATE(143), 1, sym_comment, - [4812] = 4, + [4886] = 10, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(312), 1, + anon_sym_EQ_EQ, + ACTIONS(314), 1, + anon_sym_BANG_EQ, + ACTIONS(316), 1, + anon_sym_LT_EQ, + ACTIONS(318), 1, + anon_sym_GT_EQ, + ACTIONS(320), 1, + anon_sym_GT, + ACTIONS(376), 1, + anon_sym_LT, + ACTIONS(533), 1, + anon_sym_QMARK, STATE(144), 1, sym_comment, - ACTIONS(534), 7, + [4917] = 7, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(488), 1, + anon_sym_LT, + ACTIONS(535), 1, + anon_sym_repeat, + STATE(114), 1, + sym_latency_annotation, + STATE(145), 1, + sym_comment, + ACTIONS(490), 4, + anon_sym_invoke, + anon_sym_seq, + anon_sym_par, + anon_sym_if, + [4942] = 9, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(537), 1, + anon_sym_RPAREN, + ACTIONS(539), 1, + anon_sym_AT, + ACTIONS(542), 1, + sym_ident, + STATE(195), 1, + aux_sym_io_port_repeat1, + STATE(281), 1, + sym_at_attribute, + STATE(352), 1, + sym_io_port, + STATE(146), 2, + sym_comment, + aux_sym_io_port_list_repeat1, + [4971] = 4, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + STATE(147), 1, + sym_comment, + ACTIONS(545), 7, ts_builtin_sym_end, aux_sym_metadata_ci_token1, anon_sym_component, @@ -6700,1877 +6821,1830 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_primitive, anon_sym_extern, anon_sym_static, - [4831] = 10, + [4990] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(263), 1, - anon_sym_EQ_EQ, - ACTIONS(265), 1, - anon_sym_BANG_EQ, - ACTIONS(271), 1, - anon_sym_LT_EQ, - ACTIONS(273), 1, - anon_sym_GT_EQ, - ACTIONS(275), 1, - anon_sym_GT, - ACTIONS(371), 1, - anon_sym_LT, - ACTIONS(536), 1, - anon_sym_RPAREN, - STATE(145), 1, + STATE(148), 1, sym_comment, - [4862] = 10, + ACTIONS(547), 7, + ts_builtin_sym_end, + aux_sym_metadata_ci_token1, + anon_sym_component, + anon_sym_comb, + anon_sym_primitive, + anon_sym_extern, + anon_sym_static, + [5009] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(426), 1, - anon_sym_ref, - ACTIONS(428), 1, - anon_sym_AT, - ACTIONS(430), 1, - sym_ident, - ACTIONS(538), 1, - anon_sym_RBRACE, - STATE(141), 1, - aux_sym_cells_inner_repeat1, - STATE(146), 1, + ACTIONS(488), 1, + anon_sym_LT, + ACTIONS(549), 1, + anon_sym_repeat, + STATE(114), 1, + sym_latency_annotation, + STATE(149), 1, sym_comment, - STATE(182), 1, - sym_cell_assignment, - STATE(321), 1, - sym_at_attribute, - [4893] = 10, + ACTIONS(490), 4, + anon_sym_invoke, + anon_sym_seq, + anon_sym_par, + anon_sym_if, + [5034] = 10, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(491), 1, + ACTIONS(513), 1, anon_sym_LPAREN, - ACTIONS(493), 1, + ACTIONS(515), 1, anon_sym_LBRACK, - ACTIONS(495), 1, + ACTIONS(517), 1, anon_sym_LT, - STATE(147), 1, + STATE(150), 1, sym_comment, - STATE(159), 1, + STATE(170), 1, sym_attributes, - STATE(237), 1, + STATE(217), 1, sym_params, - STATE(238), 1, + STATE(222), 1, sym_signature, - STATE(412), 1, + STATE(413), 1, sym_io_port_list, - [4924] = 7, + [5065] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(471), 1, - anon_sym_LT, - ACTIONS(540), 1, - anon_sym_repeat, - STATE(132), 1, - sym_latency_annotation, - STATE(148), 1, + STATE(151), 1, + sym_comment, + ACTIONS(551), 2, + anon_sym_RBRACE, + anon_sym_AT, + ACTIONS(553), 4, + anon_sym_comb, + anon_sym_group, + anon_sym_static, + sym_ident, + [5085] = 5, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + STATE(152), 1, sym_comment, - ACTIONS(473), 4, - anon_sym_invoke, - anon_sym_seq, - anon_sym_par, - anon_sym_if, - [4949] = 9, + ACTIONS(555), 2, + anon_sym_RBRACE, + anon_sym_AT, + ACTIONS(557), 4, + anon_sym_comb, + anon_sym_group, + anon_sym_static, + sym_ident, + [5105] = 9, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, ACTIONS(21), 1, anon_sym_static, - ACTIONS(408), 1, + ACTIONS(407), 1, anon_sym_AT, - ACTIONS(542), 1, + ACTIONS(559), 1, anon_sym_if, - STATE(149), 1, + STATE(153), 1, sym_comment, - STATE(167), 1, + STATE(168), 1, aux_sym_io_port_repeat1, - STATE(246), 1, + STATE(212), 1, sym_at_attribute, - STATE(442), 1, + STATE(378), 1, sym_static_annotation, - [4977] = 6, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(471), 1, - anon_sym_LT, - STATE(132), 1, - sym_latency_annotation, - STATE(150), 1, - sym_comment, - ACTIONS(473), 4, - anon_sym_component, - anon_sym_comb, - anon_sym_primitive, - anon_sym_if, - [4999] = 9, + [5133] = 9, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, ACTIONS(21), 1, anon_sym_static, - ACTIONS(408), 1, + ACTIONS(407), 1, anon_sym_AT, - ACTIONS(544), 1, + ACTIONS(561), 1, anon_sym_if, - STATE(151), 1, + STATE(154), 1, sym_comment, - STATE(167), 1, + STATE(168), 1, aux_sym_io_port_repeat1, - STATE(246), 1, + STATE(212), 1, sym_at_attribute, - STATE(377), 1, + STATE(442), 1, sym_static_annotation, - [5027] = 7, + [5161] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(179), 1, - sym_ident, - ACTIONS(181), 1, - sym_number, - STATE(152), 1, + STATE(155), 1, sym_comment, - STATE(340), 1, - sym_base_expr, - STATE(67), 3, - sym_hole, - sym_port, - sym_literal, - [5051] = 8, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(485), 1, - anon_sym_wires, - ACTIONS(487), 1, - anon_sym_control, - ACTIONS(499), 1, + ACTIONS(563), 2, anon_sym_RBRACE, - STATE(153), 1, - sym_comment, - STATE(224), 1, - sym_wires, - STATE(353), 1, - sym_control, - [5076] = 5, + anon_sym_AT, + ACTIONS(565), 4, + anon_sym_comb, + anon_sym_group, + anon_sym_static, + sym_ident, + [5181] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(154), 1, + STATE(156), 1, sym_comment, - ACTIONS(546), 2, + ACTIONS(567), 2, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(548), 3, + ACTIONS(569), 4, anon_sym_comb, anon_sym_group, + anon_sym_static, sym_ident, - [5095] = 8, + [5201] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(491), 1, - anon_sym_LPAREN, - ACTIONS(493), 1, - anon_sym_LBRACK, - STATE(155), 1, + STATE(157), 1, sym_comment, - STATE(237), 1, - sym_params, - STATE(238), 1, - sym_signature, - STATE(412), 1, - sym_io_port_list, - [5120] = 5, + ACTIONS(571), 2, + anon_sym_RBRACE, + anon_sym_AT, + ACTIONS(573), 4, + anon_sym_comb, + anon_sym_group, + anon_sym_static, + sym_ident, + [5221] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(156), 1, + STATE(158), 1, sym_comment, - ACTIONS(550), 2, + ACTIONS(575), 2, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(552), 3, + ACTIONS(577), 4, anon_sym_comb, anon_sym_group, + anon_sym_static, sym_ident, - [5139] = 5, + [5241] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(157), 1, + STATE(159), 1, sym_comment, - ACTIONS(556), 2, - anon_sym_ref, - sym_ident, - ACTIONS(554), 3, - anon_sym_SEMI, + ACTIONS(579), 2, anon_sym_RBRACE, anon_sym_AT, - [5158] = 8, + ACTIONS(581), 4, + anon_sym_comb, + anon_sym_group, + anon_sym_static, + sym_ident, + [5261] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(491), 1, - anon_sym_LPAREN, - ACTIONS(495), 1, - anon_sym_LT, - STATE(158), 1, + ACTIONS(197), 1, + sym_ident, + ACTIONS(199), 1, + sym_number, + STATE(160), 1, sym_comment, - STATE(251), 1, - sym_attributes, - STATE(412), 1, - sym_io_port_list, - STATE(416), 1, - sym_signature, - [5183] = 8, + STATE(334), 1, + sym_base_expr, + STATE(50), 3, + sym_hole, + sym_port, + sym_literal, + [5285] = 8, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(491), 1, + ACTIONS(513), 1, anon_sym_LPAREN, - ACTIONS(493), 1, - anon_sym_LBRACK, - STATE(159), 1, + ACTIONS(517), 1, + anon_sym_LT, + STATE(161), 1, sym_comment, - STATE(227), 1, - sym_params, - STATE(228), 1, + STATE(248), 1, + sym_attributes, + STATE(397), 1, sym_signature, - STATE(412), 1, + STATE(413), 1, sym_io_port_list, - [5208] = 5, + [5310] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(160), 1, + ACTIONS(131), 1, + anon_sym_DOT, + STATE(162), 1, sym_comment, - ACTIONS(558), 2, - anon_sym_RBRACE, - anon_sym_AT, - ACTIONS(560), 3, - anon_sym_comb, - anon_sym_group, - sym_ident, - [5227] = 5, + ACTIONS(125), 4, + anon_sym_LBRACE, + anon_sym_COMMA, + anon_sym_RPAREN, + anon_sym_with, + [5329] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(161), 1, + STATE(163), 1, sym_comment, - ACTIONS(562), 2, - anon_sym_RBRACE, - anon_sym_AT, - ACTIONS(564), 3, - anon_sym_comb, - anon_sym_group, + ACTIONS(585), 2, + anon_sym_ref, sym_ident, - [5246] = 6, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(566), 1, + ACTIONS(583), 3, anon_sym_SEMI, - STATE(162), 1, - sym_comment, - ACTIONS(568), 2, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(570), 2, - anon_sym_ref, - sym_ident, - [5267] = 5, + [5348] = 8, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(163), 1, - sym_comment, - ACTIONS(572), 2, + ACTIONS(480), 1, + anon_sym_wires, + ACTIONS(482), 1, + anon_sym_control, + ACTIONS(531), 1, anon_sym_RBRACE, - anon_sym_AT, - ACTIONS(574), 3, - anon_sym_comb, - anon_sym_group, - sym_ident, - [5286] = 5, + STATE(164), 1, + sym_comment, + STATE(246), 1, + sym_wires, + STATE(347), 1, + sym_control, + [5373] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(164), 1, + STATE(165), 1, sym_comment, - ACTIONS(578), 2, + ACTIONS(589), 2, anon_sym_ref, sym_ident, - ACTIONS(576), 3, + ACTIONS(587), 3, anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - [5305] = 8, + [5392] = 8, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(485), 1, + ACTIONS(480), 1, anon_sym_wires, - ACTIONS(487), 1, + ACTIONS(482), 1, anon_sym_control, - ACTIONS(517), 1, + ACTIONS(591), 1, anon_sym_RBRACE, - STATE(165), 1, + STATE(166), 1, sym_comment, - STATE(208), 1, + STATE(215), 1, sym_wires, - STATE(360), 1, + STATE(405), 1, sym_control, - [5330] = 8, + [5417] = 8, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(491), 1, - anon_sym_LPAREN, - ACTIONS(495), 1, - anon_sym_LT, - STATE(166), 1, + ACTIONS(480), 1, + anon_sym_wires, + ACTIONS(482), 1, + anon_sym_control, + ACTIONS(529), 1, + anon_sym_RBRACE, + STATE(167), 1, sym_comment, - STATE(236), 1, - sym_attributes, - STATE(401), 1, - sym_signature, - STATE(412), 1, - sym_io_port_list, - [5355] = 6, + STATE(247), 1, + sym_wires, + STATE(362), 1, + sym_control, + [5442] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(580), 1, + ACTIONS(593), 1, anon_sym_AT, - STATE(246), 1, + STATE(212), 1, sym_at_attribute, - ACTIONS(168), 2, + ACTIONS(231), 2, anon_sym_if, anon_sym_static, - STATE(167), 2, + STATE(168), 2, sym_comment, aux_sym_io_port_repeat1, - [5376] = 5, - ACTIONS(3), 1, - anon_sym_SLASH_SLASH, - ACTIONS(5), 1, - aux_sym_comment_token2, - ACTIONS(113), 1, - anon_sym_DOT, - STATE(168), 1, - sym_comment, - ACTIONS(107), 4, - anon_sym_LBRACE, - anon_sym_COMMA, - anon_sym_RPAREN, - anon_sym_with, - [5395] = 6, + [5463] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(583), 1, + ACTIONS(596), 1, anon_sym_SEMI, STATE(169), 1, sym_comment, - ACTIONS(585), 2, + ACTIONS(598), 2, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(587), 2, + ACTIONS(600), 2, anon_sym_ref, sym_ident, - [5416] = 8, + [5484] = 8, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(485), 1, - anon_sym_wires, - ACTIONS(487), 1, - anon_sym_control, - ACTIONS(589), 1, - anon_sym_RBRACE, + ACTIONS(513), 1, + anon_sym_LPAREN, + ACTIONS(515), 1, + anon_sym_LBRACK, STATE(170), 1, sym_comment, - STATE(212), 1, - sym_wires, - STATE(405), 1, - sym_control, - [5441] = 5, + STATE(225), 1, + sym_params, + STATE(245), 1, + sym_signature, + STATE(413), 1, + sym_io_port_list, + [5509] = 8, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(513), 1, + anon_sym_LPAREN, + ACTIONS(515), 1, + anon_sym_LBRACK, STATE(171), 1, sym_comment, - ACTIONS(591), 2, - anon_sym_RBRACE, - anon_sym_AT, - ACTIONS(593), 3, - anon_sym_comb, - anon_sym_group, - sym_ident, - [5460] = 6, + STATE(217), 1, + sym_params, + STATE(222), 1, + sym_signature, + STATE(413), 1, + sym_io_port_list, + [5534] = 8, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(595), 1, - anon_sym_SEMI, + ACTIONS(513), 1, + anon_sym_LPAREN, + ACTIONS(517), 1, + anon_sym_LT, STATE(172), 1, sym_comment, - ACTIONS(597), 2, - anon_sym_RBRACE, - anon_sym_AT, - ACTIONS(599), 2, - anon_sym_ref, - sym_ident, - [5481] = 5, + STATE(229), 1, + sym_attributes, + STATE(413), 1, + sym_io_port_list, + STATE(417), 1, + sym_signature, + [5559] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(173), 1, sym_comment, - ACTIONS(601), 2, + ACTIONS(604), 2, + anon_sym_ref, + sym_ident, + ACTIONS(602), 3, + anon_sym_SEMI, anon_sym_RBRACE, anon_sym_AT, - ACTIONS(603), 3, - anon_sym_comb, - anon_sym_group, - sym_ident, - [5500] = 5, + [5578] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(606), 1, + anon_sym_SEMI, STATE(174), 1, sym_comment, - ACTIONS(607), 2, - anon_sym_ref, - sym_ident, - ACTIONS(605), 3, - anon_sym_SEMI, + ACTIONS(608), 2, anon_sym_RBRACE, anon_sym_AT, - [5519] = 6, + ACTIONS(610), 2, + anon_sym_ref, + sym_ident, + [5599] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(181), 1, - sym_number, - ACTIONS(609), 1, - sym_ident, + ACTIONS(612), 1, + anon_sym_SEMI, STATE(175), 1, sym_comment, - STATE(304), 2, - sym_port, - sym_literal, - [5539] = 5, + ACTIONS(614), 2, + anon_sym_RBRACE, + anon_sym_AT, + ACTIONS(616), 2, + anon_sym_ref, + sym_ident, + [5620] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(176), 1, sym_comment, - ACTIONS(568), 2, - anon_sym_RBRACE, - anon_sym_AT, - ACTIONS(570), 2, - anon_sym_ref, - sym_ident, - [5557] = 7, + ACTIONS(618), 4, + anon_sym_d, + anon_sym_b, + anon_sym_x, + anon_sym_o, + [5636] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(611), 1, - anon_sym_LPAREN, - ACTIONS(613), 1, - anon_sym_LBRACK, STATE(177), 1, sym_comment, - STATE(294), 1, - sym_invoke_args, - STATE(303), 1, - sym_invoke_ref_args, - [5579] = 7, + ACTIONS(620), 2, + anon_sym_RBRACE, + anon_sym_AT, + ACTIONS(622), 2, + anon_sym_ref, + sym_ident, + [5654] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(615), 1, - anon_sym_GT, - ACTIONS(617), 1, - sym_string, STATE(178), 1, sym_comment, - STATE(190), 1, - aux_sym_attributes_repeat1, - STATE(280), 1, - sym_attribute, - [5601] = 7, + ACTIONS(624), 4, + anon_sym_RBRACE, + anon_sym_comb, + anon_sym_primitive, + anon_sym_static, + [5670] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(611), 1, - anon_sym_LPAREN, - ACTIONS(613), 1, - anon_sym_LBRACK, + ACTIONS(559), 1, + anon_sym_if, + ACTIONS(626), 1, + anon_sym_invoke, + ACTIONS(628), 1, + anon_sym_seq, + ACTIONS(630), 1, + anon_sym_par, STATE(179), 1, sym_comment, - STATE(315), 1, - sym_invoke_ref_args, - STATE(318), 1, - sym_invoke_args, - [5623] = 7, + [5692] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(619), 1, - anon_sym_RPAREN, - ACTIONS(621), 1, - sym_ident, + ACTIONS(632), 1, + anon_sym_LPAREN, + ACTIONS(634), 1, + anon_sym_LBRACK, STATE(180), 1, sym_comment, - STATE(211), 1, - aux_sym_invoke_args_repeat1, - STATE(288), 1, - sym_invoke_arg, - [5645] = 6, + STATE(296), 1, + sym_invoke_args, + STATE(304), 1, + sym_invoke_ref_args, + [5714] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(168), 1, - sym_ident, - ACTIONS(623), 1, - anon_sym_AT, - STATE(277), 1, - sym_at_attribute, - STATE(181), 2, + STATE(181), 1, sym_comment, - aux_sym_io_port_repeat1, - [5665] = 5, + ACTIONS(614), 2, + anon_sym_RBRACE, + anon_sym_AT, + ACTIONS(616), 2, + anon_sym_ref, + sym_ident, + [5732] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(197), 1, + sym_ident, STATE(182), 1, sym_comment, - ACTIONS(626), 2, - anon_sym_RBRACE, - anon_sym_AT, - ACTIONS(628), 2, - anon_sym_ref, - sym_ident, - [5683] = 7, + STATE(450), 1, + sym_lhs, + STATE(333), 2, + sym_hole, + sym_port, + [5752] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(611), 1, - anon_sym_LPAREN, - ACTIONS(613), 1, - anon_sym_LBRACK, + ACTIONS(636), 1, + anon_sym_invoke, + ACTIONS(638), 1, + anon_sym_seq, + ACTIONS(640), 1, + anon_sym_par, + ACTIONS(642), 1, + anon_sym_if, STATE(183), 1, sym_comment, - STATE(270), 1, - sym_invoke_args, - STATE(271), 1, - sym_invoke_ref_args, - [5705] = 7, + [5774] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(630), 1, - anon_sym_RBRACK, ACTIONS(632), 1, - sym_ident, + anon_sym_LPAREN, + ACTIONS(634), 1, + anon_sym_LBRACK, STATE(184), 1, sym_comment, - STATE(210), 1, - aux_sym_invoke_ref_args_repeat1, - STATE(292), 1, - sym_invoke_ref_arg, - [5727] = 7, + STATE(316), 1, + sym_invoke_ref_args, + STATE(318), 1, + sym_invoke_args, + [5796] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(542), 1, - anon_sym_if, - ACTIONS(634), 1, - anon_sym_invoke, - ACTIONS(636), 1, - anon_sym_seq, - ACTIONS(638), 1, - anon_sym_par, + ACTIONS(21), 1, + anon_sym_static, STATE(185), 1, sym_comment, - [5749] = 6, + STATE(263), 1, + sym_static_annotation, + ACTIONS(644), 2, + anon_sym_component, + anon_sym_primitive, + [5816] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(640), 1, + ACTIONS(646), 1, anon_sym_GT, - ACTIONS(642), 1, + ACTIONS(648), 1, sym_string, - STATE(354), 1, - sym_attribute, - STATE(186), 2, + STATE(186), 1, sym_comment, + STATE(194), 1, aux_sym_attributes_repeat1, - [5769] = 7, + STATE(285), 1, + sym_attribute, + [5838] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(121), 1, - anon_sym_AT, - ACTIONS(645), 1, + ACTIONS(650), 1, + anon_sym_RBRACK, + ACTIONS(652), 1, sym_ident, - STATE(181), 1, - aux_sym_io_port_repeat1, STATE(187), 1, sym_comment, - STATE(277), 1, - sym_at_attribute, - [5791] = 6, + STATE(228), 1, + aux_sym_invoke_ref_args_repeat1, + STATE(294), 1, + sym_invoke_ref_arg, + [5860] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(21), 1, - anon_sym_static, + ACTIONS(654), 1, + anon_sym_RPAREN, + ACTIONS(656), 1, + sym_ident, STATE(188), 1, sym_comment, - STATE(262), 1, - sym_static_annotation, - ACTIONS(647), 2, - anon_sym_component, - anon_sym_primitive, - [5811] = 7, + STATE(203), 1, + aux_sym_invoke_args_repeat1, + STATE(290), 1, + sym_invoke_arg, + [5882] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(544), 1, + ACTIONS(561), 1, anon_sym_if, - ACTIONS(634), 1, + ACTIONS(626), 1, anon_sym_invoke, - ACTIONS(636), 1, + ACTIONS(628), 1, anon_sym_seq, - ACTIONS(638), 1, + ACTIONS(630), 1, anon_sym_par, STATE(189), 1, sym_comment, - [5833] = 7, + [5904] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(617), 1, - sym_string, - ACTIONS(649), 1, - anon_sym_GT, - STATE(186), 1, - aux_sym_attributes_repeat1, + ACTIONS(199), 1, + sym_number, + ACTIONS(658), 1, + sym_ident, STATE(190), 1, sym_comment, - STATE(291), 1, - sym_attribute, - [5855] = 4, + STATE(307), 2, + sym_port, + sym_literal, + [5924] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(660), 1, + anon_sym_LPAREN, STATE(191), 1, sym_comment, - ACTIONS(651), 4, - anon_sym_d, - anon_sym_b, - anon_sym_x, - anon_sym_o, - [5871] = 6, + ACTIONS(306), 3, + anon_sym_if, + anon_sym_static, + anon_sym_AT, + [5942] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(179), 1, + ACTIONS(231), 1, sym_ident, - STATE(192), 1, + ACTIONS(662), 1, + anon_sym_AT, + STATE(281), 1, + sym_at_attribute, + STATE(192), 2, sym_comment, - STATE(450), 1, - sym_lhs, - STATE(334), 2, - sym_hole, - sym_port, - [5891] = 5, + aux_sym_io_port_repeat1, + [5962] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(653), 1, + ACTIONS(632), 1, anon_sym_LPAREN, + ACTIONS(634), 1, + anon_sym_LBRACK, STATE(193), 1, sym_comment, - ACTIONS(229), 3, - anon_sym_if, - anon_sym_static, - anon_sym_AT, - [5909] = 7, + STATE(270), 1, + sym_invoke_args, + STATE(271), 1, + sym_invoke_ref_args, + [5984] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(655), 1, - anon_sym_invoke, - ACTIONS(657), 1, - anon_sym_seq, - ACTIONS(659), 1, - anon_sym_par, - ACTIONS(661), 1, - anon_sym_if, + ACTIONS(648), 1, + sym_string, + ACTIONS(665), 1, + anon_sym_GT, STATE(194), 1, sym_comment, - [5931] = 5, + STATE(197), 1, + aux_sym_attributes_repeat1, + STATE(303), 1, + sym_attribute, + [6006] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(195), 1, - sym_comment, - ACTIONS(585), 2, - anon_sym_RBRACE, + ACTIONS(113), 1, anon_sym_AT, - ACTIONS(587), 2, - anon_sym_ref, + ACTIONS(667), 1, sym_ident, - [5949] = 7, + STATE(192), 1, + aux_sym_io_port_repeat1, + STATE(195), 1, + sym_comment, + STATE(281), 1, + sym_at_attribute, + [6028] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(655), 1, - anon_sym_invoke, - ACTIONS(657), 1, - anon_sym_seq, - ACTIONS(659), 1, - anon_sym_par, - ACTIONS(663), 1, - anon_sym_if, STATE(196), 1, sym_comment, - [5971] = 6, + ACTIONS(598), 2, + anon_sym_RBRACE, + anon_sym_AT, + ACTIONS(600), 2, + anon_sym_ref, + sym_ident, + [6046] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(179), 1, - sym_ident, - STATE(197), 1, + ACTIONS(669), 1, + anon_sym_GT, + ACTIONS(671), 1, + sym_string, + STATE(349), 1, + sym_attribute, + STATE(197), 2, sym_comment, - STATE(374), 1, - sym_lhs, - STATE(334), 2, - sym_hole, - sym_port, - [5991] = 4, + aux_sym_attributes_repeat1, + [6066] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(198), 1, sym_comment, - ACTIONS(665), 4, + ACTIONS(674), 2, anon_sym_RBRACE, - anon_sym_comb, - anon_sym_primitive, - anon_sym_static, - [6007] = 5, + anon_sym_AT, + ACTIONS(676), 2, + anon_sym_ref, + sym_ident, + [6084] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(197), 1, + sym_ident, STATE(199), 1, sym_comment, - ACTIONS(667), 2, - anon_sym_RBRACE, - anon_sym_AT, - ACTIONS(669), 2, - anon_sym_ref, - sym_ident, - [6025] = 5, + STATE(384), 1, + sym_lhs, + STATE(333), 2, + sym_hole, + sym_port, + [6104] = 7, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(671), 1, - anon_sym_LPAREN, + ACTIONS(636), 1, + anon_sym_invoke, + ACTIONS(638), 1, + anon_sym_seq, + ACTIONS(640), 1, + anon_sym_par, + ACTIONS(678), 1, + anon_sym_if, STATE(200), 1, sym_comment, - ACTIONS(229), 2, - anon_sym_AT, - sym_ident, - [6042] = 5, - ACTIONS(3), 1, + [6126] = 6, + ACTIONS(680), 1, anon_sym_SLASH_SLASH, - ACTIONS(5), 1, + ACTIONS(682), 1, aux_sym_comment_token2, - ACTIONS(673), 1, - anon_sym_COMMA, + ACTIONS(684), 1, + anon_sym_RBRACE, + ACTIONS(686), 1, + sym_any_line, STATE(201), 1, sym_comment, - ACTIONS(675), 2, - anon_sym_RPAREN, - sym_number, - [6059] = 6, - ACTIONS(3), 1, + STATE(241), 1, + aux_sym_primitive_blob_repeat1, + [6145] = 5, + ACTIONS(680), 1, anon_sym_SLASH_SLASH, - ACTIONS(5), 1, + ACTIONS(682), 1, aux_sym_comment_token2, - ACTIONS(609), 1, - sym_ident, - STATE(202), 1, + ACTIONS(688), 1, + anon_sym_RBRACE, + ACTIONS(690), 1, + sym_any_line, + STATE(202), 2, sym_comment, - STATE(297), 1, - sym_port_with, - STATE(298), 1, - sym_port, - [6078] = 6, + aux_sym_primitive_blob_repeat1, + [6162] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(495), 1, - anon_sym_LT, - ACTIONS(677), 1, - anon_sym_LBRACE, + ACTIONS(656), 1, + sym_ident, STATE(203), 1, sym_comment, - STATE(411), 1, - sym_attributes, - [6097] = 5, + STATE(238), 1, + aux_sym_invoke_args_repeat1, + STATE(322), 1, + sym_invoke_arg, + [6181] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(679), 1, - anon_sym_comb, STATE(204), 1, sym_comment, - ACTIONS(647), 2, - anon_sym_component, - anon_sym_primitive, - [6114] = 6, + ACTIONS(693), 3, + anon_sym_SEMI, + anon_sym_LPAREN, + anon_sym_with, + [6196] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(609), 1, - sym_ident, - STATE(205), 1, + ACTIONS(695), 1, + anon_sym_RPAREN, + ACTIONS(697), 1, + sym_number, + STATE(205), 2, sym_comment, - STATE(265), 1, - sym_port_with, - STATE(298), 1, - sym_port, - [6133] = 6, + aux_sym_arg_list_repeat1, + [6213] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(609), 1, - sym_ident, + ACTIONS(700), 1, + anon_sym_COMMA, STATE(206), 1, sym_comment, - STATE(263), 1, - sym_port_with, - STATE(298), 1, - sym_port, - [6152] = 6, + ACTIONS(702), 2, + anon_sym_RPAREN, + sym_number, + [6230] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(609), 1, - sym_ident, + ACTIONS(704), 1, + anon_sym_RPAREN, + ACTIONS(706), 1, + sym_number, + STATE(205), 1, + aux_sym_arg_list_repeat1, STATE(207), 1, sym_comment, - STATE(296), 1, - sym_port_with, - STATE(298), 1, - sym_port, - [6171] = 6, + [6249] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(487), 1, + ACTIONS(482), 1, anon_sym_control, - ACTIONS(589), 1, + ACTIONS(531), 1, anon_sym_RBRACE, STATE(208), 1, sym_comment, - STATE(405), 1, + STATE(347), 1, sym_control, - [6190] = 4, + [6268] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(209), 1, sym_comment, - ACTIONS(681), 3, - anon_sym_RBRACE, - anon_sym_wires, - anon_sym_control, - [6205] = 6, + ACTIONS(708), 3, + anon_sym_SEMI, + anon_sym_DASH_GT, + anon_sym_LBRACE, + [6283] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(632), 1, + ACTIONS(658), 1, sym_ident, STATE(210), 1, sym_comment, - STATE(223), 1, - aux_sym_invoke_ref_args_repeat1, - STATE(319), 1, - sym_invoke_ref_arg, - [6224] = 6, + STATE(265), 1, + sym_port_with, + STATE(298), 1, + sym_port, + [6302] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(621), 1, + ACTIONS(658), 1, sym_ident, STATE(211), 1, sym_comment, - STATE(221), 1, - aux_sym_invoke_args_repeat1, - STATE(322), 1, - sym_invoke_arg, - [6243] = 6, + STATE(264), 1, + sym_port_with, + STATE(298), 1, + sym_port, + [6321] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(487), 1, - anon_sym_control, - ACTIONS(683), 1, - anon_sym_RBRACE, STATE(212), 1, sym_comment, - STATE(453), 1, - sym_control, - [6262] = 4, + ACTIONS(399), 3, + anon_sym_if, + anon_sym_static, + anon_sym_AT, + [6336] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(213), 1, sym_comment, - ACTIONS(685), 3, + ACTIONS(710), 3, anon_sym_SEMI, anon_sym_LPAREN, anon_sym_with, - [6277] = 6, + [6351] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(687), 1, - anon_sym_RPAREN, - ACTIONS(689), 1, - sym_number, STATE(214), 1, sym_comment, - STATE(230), 1, - aux_sym_arg_list_repeat1, - [6296] = 6, + ACTIONS(551), 3, + anon_sym_RBRACE, + anon_sym_AT, + sym_ident, + [6366] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(609), 1, - sym_ident, + ACTIONS(482), 1, + anon_sym_control, + ACTIONS(712), 1, + anon_sym_RBRACE, STATE(215), 1, sym_comment, - STATE(272), 1, - sym_port_with, - STATE(298), 1, - sym_port, - [6315] = 4, + STATE(443), 1, + sym_control, + [6385] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(216), 1, sym_comment, - ACTIONS(390), 3, - anon_sym_if, - anon_sym_static, - anon_sym_AT, - [6330] = 6, + ACTIONS(714), 3, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + [6400] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(691), 1, - anon_sym_SEMI, - ACTIONS(693), 1, - anon_sym_LBRACE, + ACTIONS(513), 1, + anon_sym_LPAREN, STATE(217), 1, sym_comment, - STATE(361), 1, - sym_primitive_blob, - [6349] = 6, + STATE(245), 1, + sym_signature, + STATE(413), 1, + sym_io_port_list, + [6419] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(495), 1, - anon_sym_LT, - ACTIONS(695), 1, - anon_sym_LBRACE, STATE(218), 1, sym_comment, - STATE(437), 1, - sym_attributes, - [6368] = 4, + ACTIONS(567), 3, + anon_sym_RBRACE, + anon_sym_AT, + sym_ident, + [6434] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(658), 1, + sym_ident, STATE(219), 1, sym_comment, - ACTIONS(697), 3, - anon_sym_SEMI, - anon_sym_LPAREN, - anon_sym_with, - [6383] = 5, - ACTIONS(699), 1, + STATE(295), 1, + sym_port_with, + STATE(298), 1, + sym_port, + [6453] = 4, + ACTIONS(3), 1, anon_sym_SLASH_SLASH, - ACTIONS(701), 1, + ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(703), 1, - anon_sym_RBRACE, - ACTIONS(705), 1, - sym_any_line, - STATE(220), 2, + STATE(220), 1, sym_comment, - aux_sym_primitive_blob_repeat1, - [6400] = 5, + ACTIONS(716), 3, + anon_sym_RBRACE, + anon_sym_wires, + anon_sym_control, + [6468] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(708), 1, - sym_ident, - STATE(370), 1, - sym_invoke_arg, - STATE(221), 2, + ACTIONS(517), 1, + anon_sym_LT, + ACTIONS(718), 1, + anon_sym_LBRACE, + STATE(221), 1, sym_comment, - aux_sym_invoke_args_repeat1, - [6417] = 6, + STATE(435), 1, + sym_attributes, + [6487] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(609), 1, - sym_ident, + ACTIONS(720), 1, + anon_sym_SEMI, + ACTIONS(722), 1, + anon_sym_LBRACE, STATE(222), 1, sym_comment, - STATE(266), 1, - sym_port_with, - STATE(298), 1, - sym_port, - [6436] = 5, + STATE(357), 1, + sym_primitive_blob, + [6506] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(711), 1, + ACTIONS(658), 1, sym_ident, - STATE(373), 1, - sym_invoke_ref_arg, - STATE(223), 2, + STATE(223), 1, sym_comment, - aux_sym_invoke_ref_args_repeat1, - [6453] = 6, + STATE(291), 1, + sym_port_with, + STATE(298), 1, + sym_port, + [6525] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(487), 1, - anon_sym_control, - ACTIONS(517), 1, - anon_sym_RBRACE, + ACTIONS(722), 1, + anon_sym_LBRACE, + ACTIONS(724), 1, + anon_sym_SEMI, STATE(224), 1, sym_comment, - STATE(360), 1, - sym_control, - [6472] = 4, + STATE(363), 1, + sym_primitive_blob, + [6544] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(513), 1, + anon_sym_LPAREN, + STATE(224), 1, + sym_signature, STATE(225), 1, sym_comment, - ACTIONS(714), 3, - anon_sym_LBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - [6487] = 4, + STATE(413), 1, + sym_io_port_list, + [6563] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(226), 1, sym_comment, - ACTIONS(716), 3, + ACTIONS(726), 3, anon_sym_SEMI, anon_sym_DASH_GT, anon_sym_LBRACE, - [6502] = 6, + [6578] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(491), 1, - anon_sym_LPAREN, - STATE(217), 1, - sym_signature, STATE(227), 1, sym_comment, - STATE(412), 1, - sym_io_port_list, - [6521] = 6, + ACTIONS(537), 3, + anon_sym_RPAREN, + anon_sym_AT, + sym_ident, + [6593] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(693), 1, - anon_sym_LBRACE, - ACTIONS(718), 1, - anon_sym_SEMI, + ACTIONS(652), 1, + sym_ident, STATE(228), 1, sym_comment, - STATE(344), 1, - sym_primitive_blob, - [6540] = 6, - ACTIONS(699), 1, + STATE(243), 1, + aux_sym_invoke_ref_args_repeat1, + STATE(321), 1, + sym_invoke_ref_arg, + [6612] = 6, + ACTIONS(3), 1, anon_sym_SLASH_SLASH, - ACTIONS(701), 1, + ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(720), 1, - anon_sym_RBRACE, - ACTIONS(722), 1, - sym_any_line, - STATE(220), 1, - aux_sym_primitive_blob_repeat1, + ACTIONS(513), 1, + anon_sym_LPAREN, STATE(229), 1, sym_comment, - [6559] = 5, + STATE(397), 1, + sym_signature, + STATE(413), 1, + sym_io_port_list, + [6631] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(724), 1, - anon_sym_RPAREN, - ACTIONS(726), 1, - sym_number, - STATE(230), 2, + ACTIONS(728), 1, + anon_sym_comb, + STATE(230), 1, sym_comment, - aux_sym_arg_list_repeat1, - [6576] = 4, + ACTIONS(644), 2, + anon_sym_component, + anon_sym_primitive, + [6648] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(658), 1, + sym_ident, STATE(231), 1, sym_comment, - ACTIONS(729), 3, - anon_sym_SEMI, - anon_sym_LPAREN, - anon_sym_with, - [6591] = 6, + STATE(298), 1, + sym_port, + STATE(313), 1, + sym_port_with, + [6667] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(487), 1, - anon_sym_control, - ACTIONS(499), 1, - anon_sym_RBRACE, + ACTIONS(722), 1, + anon_sym_LBRACE, + ACTIONS(730), 1, + anon_sym_SEMI, STATE(232), 1, sym_comment, - STATE(353), 1, - sym_control, - [6610] = 4, + STATE(391), 1, + sym_primitive_blob, + [6686] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(732), 1, + anon_sym_LPAREN, STATE(233), 1, sym_comment, - ACTIONS(731), 3, - anon_sym_LBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - [6625] = 4, + ACTIONS(306), 2, + anon_sym_AT, + sym_ident, + [6703] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(234), 1, sym_comment, - ACTIONS(733), 3, + ACTIONS(734), 3, anon_sym_SEMI, - anon_sym_DASH_GT, - anon_sym_LBRACE, - [6640] = 4, + anon_sym_LPAREN, + anon_sym_with, + [6718] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(513), 1, + anon_sym_LPAREN, + STATE(222), 1, + sym_signature, STATE(235), 1, sym_comment, - ACTIONS(509), 3, - anon_sym_RPAREN, - anon_sym_AT, - sym_ident, - [6655] = 6, + STATE(413), 1, + sym_io_port_list, + [6737] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(491), 1, - anon_sym_LPAREN, + ACTIONS(517), 1, + anon_sym_LT, + ACTIONS(736), 1, + anon_sym_LBRACE, STATE(236), 1, sym_comment, - STATE(359), 1, - sym_signature, - STATE(412), 1, - sym_io_port_list, - [6674] = 6, + STATE(411), 1, + sym_attributes, + [6756] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(491), 1, - anon_sym_LPAREN, - STATE(228), 1, - sym_signature, STATE(237), 1, sym_comment, - STATE(412), 1, - sym_io_port_list, - [6693] = 6, + ACTIONS(738), 3, + anon_sym_RBRACE, + anon_sym_AT, + sym_ident, + [6771] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(693), 1, - anon_sym_LBRACE, - ACTIONS(735), 1, - anon_sym_SEMI, - STATE(238), 1, + ACTIONS(740), 1, + sym_ident, + STATE(371), 1, + sym_invoke_arg, + STATE(238), 2, sym_comment, - STATE(362), 1, - sym_primitive_blob, - [6712] = 6, - ACTIONS(699), 1, + aux_sym_invoke_args_repeat1, + [6788] = 4, + ACTIONS(3), 1, anon_sym_SLASH_SLASH, - ACTIONS(701), 1, + ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(722), 1, - sym_any_line, - ACTIONS(737), 1, - anon_sym_RBRACE, - STATE(229), 1, - aux_sym_primitive_blob_repeat1, STATE(239), 1, sym_comment, - [6731] = 5, + ACTIONS(395), 3, + anon_sym_if, + anon_sym_static, + anon_sym_AT, + [6803] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(739), 1, - anon_sym_LPAREN, + ACTIONS(658), 1, + sym_ident, STATE(240), 1, sym_comment, - ACTIONS(233), 2, - anon_sym_ref, - sym_ident, - [6748] = 4, - ACTIONS(3), 1, + STATE(268), 1, + sym_port_with, + STATE(298), 1, + sym_port, + [6822] = 6, + ACTIONS(680), 1, anon_sym_SLASH_SLASH, - ACTIONS(5), 1, + ACTIONS(682), 1, aux_sym_comment_token2, + ACTIONS(686), 1, + sym_any_line, + ACTIONS(743), 1, + anon_sym_RBRACE, + STATE(202), 1, + aux_sym_primitive_blob_repeat1, STATE(241), 1, sym_comment, - ACTIONS(741), 3, - anon_sym_RBRACE, - anon_sym_AT, - sym_ident, - [6763] = 6, + [6841] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(609), 1, - sym_ident, STATE(242), 1, sym_comment, - STATE(298), 1, - sym_port, - STATE(312), 1, - sym_port_with, - [6782] = 4, + ACTIONS(745), 3, + anon_sym_RBRACE, + anon_sym_wires, + anon_sym_control, + [6856] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - STATE(243), 1, - sym_comment, - ACTIONS(591), 3, - anon_sym_RBRACE, - anon_sym_AT, + ACTIONS(747), 1, sym_ident, - [6797] = 4, + STATE(374), 1, + sym_invoke_ref_arg, + STATE(243), 2, + sym_comment, + aux_sym_invoke_ref_args_repeat1, + [6873] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(658), 1, + sym_ident, STATE(244), 1, sym_comment, - ACTIONS(546), 3, - anon_sym_RBRACE, - anon_sym_AT, - sym_ident, - [6812] = 4, + STATE(272), 1, + sym_port_with, + STATE(298), 1, + sym_port, + [6892] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(722), 1, + anon_sym_LBRACE, + ACTIONS(750), 1, + anon_sym_SEMI, STATE(245), 1, sym_comment, - ACTIONS(743), 3, - anon_sym_LBRACE, - anon_sym_LPAREN, - anon_sym_LBRACK, - [6827] = 4, + STATE(336), 1, + sym_primitive_blob, + [6911] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(482), 1, + anon_sym_control, + ACTIONS(529), 1, + anon_sym_RBRACE, STATE(246), 1, sym_comment, - ACTIONS(365), 3, - anon_sym_if, - anon_sym_static, - anon_sym_AT, - [6842] = 4, + STATE(362), 1, + sym_control, + [6930] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(482), 1, + anon_sym_control, + ACTIONS(591), 1, + anon_sym_RBRACE, STATE(247), 1, sym_comment, - ACTIONS(745), 3, - anon_sym_SEMI, - anon_sym_DASH_GT, - anon_sym_LBRACE, - [6857] = 6, + STATE(405), 1, + sym_control, + [6949] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(609), 1, - sym_ident, + ACTIONS(513), 1, + anon_sym_LPAREN, STATE(248), 1, sym_comment, - STATE(259), 1, - sym_port_with, - STATE(298), 1, - sym_port, - [6876] = 6, + STATE(356), 1, + sym_signature, + STATE(413), 1, + sym_io_port_list, + [6968] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(491), 1, - anon_sym_LPAREN, - STATE(238), 1, - sym_signature, + ACTIONS(658), 1, + sym_ident, STATE(249), 1, sym_comment, - STATE(412), 1, - sym_io_port_list, - [6895] = 6, + STATE(273), 1, + sym_port_with, + STATE(298), 1, + sym_port, + [6987] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(693), 1, - anon_sym_LBRACE, - ACTIONS(747), 1, - anon_sym_SEMI, + ACTIONS(658), 1, + sym_ident, STATE(250), 1, sym_comment, - STATE(397), 1, - sym_primitive_blob, - [6914] = 6, + STATE(260), 1, + sym_port_with, + STATE(298), 1, + sym_port, + [7006] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(491), 1, - anon_sym_LPAREN, STATE(251), 1, sym_comment, - STATE(401), 1, - sym_signature, - STATE(412), 1, - sym_io_port_list, - [6933] = 6, + ACTIONS(752), 3, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + [7021] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(689), 1, - sym_number, - ACTIONS(749), 1, - anon_sym_RPAREN, - STATE(214), 1, - aux_sym_arg_list_repeat1, STATE(252), 1, sym_comment, - [6952] = 4, + ACTIONS(754), 3, + anon_sym_LBRACE, + anon_sym_LPAREN, + anon_sym_LBRACK, + [7036] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(706), 1, + sym_number, + ACTIONS(756), 1, + anon_sym_RPAREN, + STATE(207), 1, + aux_sym_arg_list_repeat1, STATE(253), 1, sym_comment, - ACTIONS(751), 3, - anon_sym_RBRACE, - anon_sym_wires, - anon_sym_control, - [6967] = 6, + [7055] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(609), 1, - sym_ident, STATE(254), 1, sym_comment, - STATE(274), 1, - sym_port_with, - STATE(298), 1, - sym_port, - [6986] = 6, + ACTIONS(758), 3, + anon_sym_SEMI, + anon_sym_DASH_GT, + anon_sym_LBRACE, + [7070] = 6, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(609), 1, + ACTIONS(658), 1, sym_ident, STATE(255), 1, sym_comment, - STATE(273), 1, + STATE(274), 1, sym_port_with, STATE(298), 1, sym_port, - [7005] = 4, + [7089] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(760), 1, + anon_sym_LPAREN, STATE(256), 1, sym_comment, - ACTIONS(753), 2, - anon_sym_COMMA, - anon_sym_RPAREN, - [7019] = 4, + ACTIONS(310), 2, + anon_sym_ref, + sym_ident, + [7106] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(257), 1, sym_comment, - ACTIONS(755), 2, + ACTIONS(762), 2, anon_sym_COMMA, - anon_sym_GT, - [7033] = 5, + anon_sym_RPAREN, + [7120] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(412), 1, - anon_sym_LBRACE, - STATE(56), 1, - sym_block, - STATE(258), 1, + ACTIONS(764), 1, + sym_ident, + STATE(258), 2, sym_comment, - [7049] = 5, + aux_sym_params_repeat1, + [7134] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(412), 1, + ACTIONS(403), 1, anon_sym_LBRACE, - STATE(63), 1, + STATE(45), 1, sym_block, STATE(259), 1, sym_comment, - [7065] = 5, + [7150] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(757), 1, - anon_sym_component, - ACTIONS(759), 1, - anon_sym_primitive, + ACTIONS(403), 1, + anon_sym_LBRACE, + STATE(46), 1, + sym_block, STATE(260), 1, sym_comment, - [7081] = 5, + [7166] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(412), 1, - anon_sym_LBRACE, - STATE(66), 1, - sym_block, + ACTIONS(767), 1, + anon_sym_component, + ACTIONS(769), 1, + anon_sym_primitive, STATE(261), 1, sym_comment, - [7097] = 4, + [7182] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(403), 1, + anon_sym_LBRACE, + STATE(70), 1, + sym_block, STATE(262), 1, sym_comment, - ACTIONS(761), 2, - anon_sym_component, - anon_sym_primitive, - [7111] = 5, + [7198] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(404), 1, - anon_sym_LBRACE, - STATE(44), 1, - sym_block, STATE(263), 1, sym_comment, - [7127] = 5, + ACTIONS(771), 2, + anon_sym_component, + anon_sym_primitive, + [7212] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(763), 1, - sym_ident, - STATE(162), 1, - sym_instantiation, + ACTIONS(411), 1, + anon_sym_LBRACE, + STATE(54), 1, + sym_block, STATE(264), 1, sym_comment, - [7143] = 5, + [7228] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(404), 1, + ACTIONS(403), 1, anon_sym_LBRACE, + STATE(32), 1, + sym_block, STATE(265), 1, sym_comment, - STATE(306), 1, - sym_block, - [7159] = 5, + [7244] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(412), 1, - anon_sym_LBRACE, - STATE(44), 1, - sym_block, + ACTIONS(773), 1, + sym_ident, + STATE(169), 1, + sym_instantiation, STATE(266), 1, sym_comment, - [7175] = 5, + [7260] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(404), 1, + ACTIONS(411), 1, anon_sym_LBRACE, - STATE(43), 1, + STATE(53), 1, sym_block, STATE(267), 1, sym_comment, - [7191] = 5, + [7276] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(187), 1, - anon_sym_RBRACE, - ACTIONS(765), 1, - anon_sym_else, + ACTIONS(403), 1, + anon_sym_LBRACE, + STATE(54), 1, + sym_block, STATE(268), 1, sym_comment, - [7207] = 5, + [7292] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(412), 1, + ACTIONS(403), 1, anon_sym_LBRACE, - STATE(43), 1, + STATE(53), 1, sym_block, STATE(269), 1, sym_comment, - [7223] = 5, + [7308] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(611), 1, + ACTIONS(632), 1, anon_sym_LPAREN, STATE(270), 1, sym_comment, - STATE(295), 1, + STATE(297), 1, sym_invoke_args, - [7239] = 5, + [7324] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(611), 1, + ACTIONS(632), 1, anon_sym_LPAREN, STATE(271), 1, sym_comment, - STATE(294), 1, + STATE(296), 1, sym_invoke_args, - [7255] = 5, + [7340] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(767), 1, + ACTIONS(775), 1, anon_sym_LBRACE, - STATE(38), 1, - sym_block, STATE(272), 1, sym_comment, - [7271] = 5, + STATE(277), 1, + sym_block, + [7356] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(767), 1, + ACTIONS(775), 1, anon_sym_LBRACE, - STATE(35), 1, - sym_block, STATE(273), 1, sym_comment, - [7287] = 5, + STATE(282), 1, + sym_block, + [7372] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(767), 1, + ACTIONS(775), 1, anon_sym_LBRACE, - STATE(32), 1, - sym_block, STATE(274), 1, sym_comment, - [7303] = 5, + STATE(283), 1, + sym_block, + [7388] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(769), 1, + ACTIONS(777), 1, sym_ident, STATE(275), 1, sym_comment, - STATE(284), 1, + STATE(289), 1, aux_sym_params_repeat1, - [7319] = 5, + [7404] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(503), 1, - anon_sym_RPAREN, - ACTIONS(771), 1, - anon_sym_COMMA, STATE(276), 1, sym_comment, - [7335] = 4, + ACTIONS(217), 2, + anon_sym_RBRACE, + anon_sym_else, + [7418] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(221), 1, + anon_sym_RBRACE, + ACTIONS(779), 1, + anon_sym_else, STATE(277), 1, sym_comment, - ACTIONS(365), 2, - anon_sym_AT, - sym_ident, - [7349] = 5, + [7434] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(773), 1, + ACTIONS(781), 1, anon_sym_LPAREN, - STATE(174), 1, + STATE(173), 1, sym_arg_list, STATE(278), 1, sym_comment, - [7365] = 5, + [7450] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(763), 1, + ACTIONS(773), 1, sym_ident, - STATE(169), 1, + STATE(175), 1, sym_instantiation, STATE(279), 1, sym_comment, - [7381] = 5, + [7466] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(649), 1, - anon_sym_GT, - ACTIONS(775), 1, + ACTIONS(498), 1, + anon_sym_RPAREN, + ACTIONS(783), 1, anon_sym_COMMA, STATE(280), 1, sym_comment, - [7397] = 5, + [7482] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(491), 1, - anon_sym_LPAREN, STATE(281), 1, sym_comment, - STATE(300), 1, - sym_io_port_list, - [7413] = 5, + ACTIONS(399), 2, + anon_sym_AT, + sym_ident, + [7496] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(777), 1, - anon_sym_COMMA, - ACTIONS(779), 1, - anon_sym_RBRACK, + ACTIONS(201), 1, + anon_sym_RBRACE, + ACTIONS(785), 1, + anon_sym_else, STATE(282), 1, sym_comment, - [7429] = 4, + [7512] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(207), 1, + anon_sym_RBRACE, + ACTIONS(787), 1, + anon_sym_else, STATE(283), 1, sym_comment, - ACTIONS(392), 2, - anon_sym_ref, - sym_ident, - [7443] = 5, + [7528] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(781), 1, - sym_ident, STATE(284), 1, sym_comment, - STATE(307), 1, - aux_sym_params_repeat1, - [7459] = 4, + ACTIONS(397), 2, + anon_sym_ref, + sym_ident, + [7542] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(665), 1, + anon_sym_GT, + ACTIONS(789), 1, + anon_sym_COMMA, STATE(285), 1, sym_comment, - ACTIONS(783), 2, - sym_ident, - sym_number, - [7473] = 5, + [7558] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(771), 1, - anon_sym_COMMA, - ACTIONS(785), 1, - anon_sym_RPAREN, + ACTIONS(411), 1, + anon_sym_LBRACE, + STATE(45), 1, + sym_block, STATE(286), 1, sym_comment, - [7489] = 5, + [7574] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(787), 1, - anon_sym_SEMI, - ACTIONS(789), 1, - anon_sym_with, + ACTIONS(513), 1, + anon_sym_LPAREN, STATE(287), 1, sym_comment, - [7505] = 5, + STATE(310), 1, + sym_io_port_list, + [7590] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, @@ -8578,2595 +8652,2611 @@ static const uint16_t ts_small_parse_table[] = { ACTIONS(791), 1, anon_sym_COMMA, ACTIONS(793), 1, - anon_sym_RPAREN, + anon_sym_RBRACK, STATE(288), 1, sym_comment, - [7521] = 5, + [7606] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(404), 1, - anon_sym_LBRACE, - STATE(56), 1, - sym_block, + ACTIONS(795), 1, + sym_ident, + STATE(258), 1, + aux_sym_params_repeat1, STATE(289), 1, sym_comment, - [7537] = 4, + [7622] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(797), 1, + anon_sym_COMMA, + ACTIONS(799), 1, + anon_sym_RPAREN, STATE(290), 1, sym_comment, - ACTIONS(640), 2, - anon_sym_GT, - sym_string, - [7551] = 5, + [7638] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(775), 1, - anon_sym_COMMA, - ACTIONS(795), 1, - anon_sym_GT, + ACTIONS(411), 1, + anon_sym_LBRACE, + STATE(46), 1, + sym_block, STATE(291), 1, sym_comment, - [7567] = 5, + [7654] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(797), 1, - anon_sym_COMMA, - ACTIONS(799), 1, - anon_sym_RBRACK, + ACTIONS(801), 1, + anon_sym_SEMI, + ACTIONS(803), 1, + anon_sym_with, STATE(292), 1, sym_comment, - [7583] = 5, + [7670] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(611), 1, - anon_sym_LPAREN, - STATE(287), 1, - sym_invoke_args, STATE(293), 1, sym_comment, - [7599] = 5, + ACTIONS(805), 2, + sym_ident, + sym_number, + [7684] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(611), 1, - anon_sym_LPAREN, + ACTIONS(807), 1, + anon_sym_COMMA, + ACTIONS(809), 1, + anon_sym_RBRACK, STATE(294), 1, sym_comment, - STATE(324), 1, - sym_invoke_args, - [7615] = 5, + [7700] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(801), 1, - anon_sym_SEMI, - ACTIONS(803), 1, - anon_sym_with, + ACTIONS(403), 1, + anon_sym_LBRACE, + STATE(34), 1, + sym_block, STATE(295), 1, sym_comment, - [7631] = 5, + [7716] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(404), 1, - anon_sym_LBRACE, - STATE(63), 1, - sym_block, + ACTIONS(632), 1, + anon_sym_LPAREN, STATE(296), 1, sym_comment, - [7647] = 5, + STATE(320), 1, + sym_invoke_args, + [7732] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(404), 1, - anon_sym_LBRACE, - STATE(268), 1, - sym_block, + ACTIONS(811), 1, + anon_sym_SEMI, + ACTIONS(813), 1, + anon_sym_with, STATE(297), 1, sym_comment, - [7663] = 5, + [7748] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(805), 1, + ACTIONS(815), 1, anon_sym_LBRACE, - ACTIONS(807), 1, + ACTIONS(817), 1, anon_sym_with, STATE(298), 1, sym_comment, - [7679] = 5, + [7764] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(809), 1, - anon_sym_SEMI, - ACTIONS(811), 1, - anon_sym_with, + ACTIONS(783), 1, + anon_sym_COMMA, + ACTIONS(819), 1, + anon_sym_RPAREN, STATE(299), 1, sym_comment, - [7695] = 4, + [7780] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(300), 1, sym_comment, - ACTIONS(813), 2, - anon_sym_SEMI, - anon_sym_LBRACE, - [7709] = 4, + ACTIONS(669), 2, + anon_sym_GT, + sym_string, + [7794] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(632), 1, + anon_sym_LPAREN, + STATE(292), 1, + sym_invoke_args, STATE(301), 1, sym_comment, - ACTIONS(815), 2, - anon_sym_COMMA, - anon_sym_RBRACK, - [7723] = 4, + [7810] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(302), 1, sym_comment, - ACTIONS(817), 2, + ACTIONS(821), 2, anon_sym_RBRACE, anon_sym_control, - [7737] = 5, + [7824] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(611), 1, - anon_sym_LPAREN, + ACTIONS(789), 1, + anon_sym_COMMA, + ACTIONS(823), 1, + anon_sym_GT, STATE(303), 1, sym_comment, - STATE(318), 1, - sym_invoke_args, - [7753] = 4, + [7840] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(632), 1, + anon_sym_LPAREN, STATE(304), 1, sym_comment, - ACTIONS(819), 2, - anon_sym_COMMA, - anon_sym_RPAREN, - [7767] = 5, + STATE(318), 1, + sym_invoke_args, + [7856] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(777), 1, - anon_sym_COMMA, - ACTIONS(821), 1, - anon_sym_RBRACK, + ACTIONS(825), 1, + anon_sym_SEMI, + ACTIONS(827), 1, + anon_sym_with, STATE(305), 1, sym_comment, - [7783] = 5, + [7872] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(207), 1, - anon_sym_RBRACE, - ACTIONS(823), 1, - anon_sym_else, STATE(306), 1, sym_comment, - [7799] = 4, + ACTIONS(829), 2, + anon_sym_COMMA, + anon_sym_RBRACK, + [7886] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(825), 1, - sym_ident, - STATE(307), 2, + STATE(307), 1, sym_comment, - aux_sym_params_repeat1, - [7813] = 5, + ACTIONS(831), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + [7900] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(404), 1, - anon_sym_LBRACE, - STATE(66), 1, - sym_block, + ACTIONS(773), 1, + sym_ident, + STATE(174), 1, + sym_instantiation, STATE(308), 1, sym_comment, - [7829] = 4, - ACTIONS(699), 1, + [7916] = 5, + ACTIONS(3), 1, anon_sym_SLASH_SLASH, - ACTIONS(701), 1, + ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(411), 1, + anon_sym_LBRACE, + STATE(70), 1, + sym_block, STATE(309), 1, sym_comment, - ACTIONS(828), 2, - anon_sym_RBRACE, - sym_any_line, - [7843] = 5, + [7932] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(763), 1, - sym_ident, - STATE(172), 1, - sym_instantiation, STATE(310), 1, sym_comment, - [7859] = 4, + ACTIONS(833), 2, + anon_sym_SEMI, + anon_sym_LBRACE, + [7946] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(311), 1, sym_comment, - ACTIONS(724), 2, - anon_sym_RPAREN, - sym_number, - [7873] = 5, + ACTIONS(395), 2, + anon_sym_AT, + sym_ident, + [7960] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(404), 1, - anon_sym_LBRACE, + ACTIONS(791), 1, + anon_sym_COMMA, + ACTIONS(835), 1, + anon_sym_RBRACK, STATE(312), 1, sym_comment, - STATE(314), 1, - sym_block, - [7889] = 4, + [7976] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(403), 1, + anon_sym_LBRACE, + STATE(38), 1, + sym_block, STATE(313), 1, sym_comment, - ACTIONS(390), 2, - anon_sym_AT, - sym_ident, - [7903] = 5, + [7992] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(217), 1, - anon_sym_RBRACE, - ACTIONS(830), 1, - anon_sym_else, STATE(314), 1, sym_comment, - [7919] = 5, - ACTIONS(3), 1, + ACTIONS(695), 2, + anon_sym_RPAREN, + sym_number, + [8006] = 4, + ACTIONS(680), 1, anon_sym_SLASH_SLASH, - ACTIONS(5), 1, + ACTIONS(682), 1, aux_sym_comment_token2, - ACTIONS(611), 1, - anon_sym_LPAREN, - STATE(293), 1, - sym_invoke_args, STATE(315), 1, sym_comment, - [7935] = 4, + ACTIONS(837), 2, + anon_sym_RBRACE, + sym_any_line, + [8020] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(632), 1, + anon_sym_LPAREN, + STATE(301), 1, + sym_invoke_args, STATE(316), 1, sym_comment, - ACTIONS(832), 2, - sym_ident, - sym_number, - [7949] = 4, + [8036] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(317), 1, sym_comment, - ACTIONS(834), 2, - anon_sym_COMMA, - anon_sym_RPAREN, - [7963] = 5, + ACTIONS(839), 2, + sym_ident, + sym_number, + [8050] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(611), 1, + ACTIONS(632), 1, anon_sym_LPAREN, - STATE(299), 1, + STATE(305), 1, sym_invoke_args, STATE(318), 1, sym_comment, - [7979] = 5, + [8066] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(797), 1, - anon_sym_COMMA, - ACTIONS(836), 1, - anon_sym_RBRACK, STATE(319), 1, sym_comment, - [7995] = 4, + ACTIONS(841), 2, + anon_sym_COMMA, + anon_sym_GT, + [8080] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, + ACTIONS(843), 1, + anon_sym_SEMI, + ACTIONS(845), 1, + anon_sym_with, STATE(320), 1, sym_comment, - ACTIONS(838), 2, - anon_sym_RBRACE, - anon_sym_control, - [8009] = 5, + [8096] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(840), 1, - anon_sym_ref, - ACTIONS(842), 1, - sym_ident, + ACTIONS(807), 1, + anon_sym_COMMA, + ACTIONS(847), 1, + anon_sym_RBRACK, STATE(321), 1, sym_comment, - [8025] = 5, + [8112] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(791), 1, + ACTIONS(797), 1, anon_sym_COMMA, - ACTIONS(844), 1, + ACTIONS(849), 1, anon_sym_RPAREN, STATE(322), 1, sym_comment, - [8041] = 4, + [8128] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, STATE(323), 1, sym_comment, - ACTIONS(213), 2, - anon_sym_RBRACE, - anon_sym_else, - [8055] = 5, + ACTIONS(851), 2, + anon_sym_COMMA, + anon_sym_RPAREN, + [8142] = 5, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(846), 1, - anon_sym_SEMI, - ACTIONS(848), 1, - anon_sym_with, + ACTIONS(853), 1, + anon_sym_ref, + ACTIONS(855), 1, + sym_ident, STATE(324), 1, sym_comment, - [8071] = 4, + [8158] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(850), 1, - sym_number, STATE(325), 1, sym_comment, - [8084] = 4, + ACTIONS(857), 2, + anon_sym_RBRACE, + anon_sym_control, + [8172] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(852), 1, - anon_sym_SEMI, + ACTIONS(859), 1, + sym_ident, STATE(326), 1, sym_comment, - [8097] = 4, + [8185] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(125), 1, - anon_sym_SEMI, + ACTIONS(861), 1, + anon_sym_group, STATE(327), 1, sym_comment, - [8110] = 4, + [8198] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(854), 1, + ACTIONS(863), 1, sym_number, STATE(328), 1, sym_comment, - [8123] = 4, + [8211] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(856), 1, - anon_sym_LBRACE, + ACTIONS(865), 1, + anon_sym_RBRACE, STATE(329), 1, sym_comment, - [8136] = 4, + [8224] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(858), 1, - anon_sym_LBRACE, + ACTIONS(867), 1, + anon_sym_RBRACE, STATE(330), 1, sym_comment, - [8149] = 4, + [8237] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(860), 1, - sym_ident, + ACTIONS(869), 1, + anon_sym_EQ, STATE(331), 1, sym_comment, - [8162] = 4, + [8250] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(862), 1, - anon_sym_EQ, + ACTIONS(871), 1, + sym_ident, STATE(332), 1, sym_comment, - [8175] = 4, + [8263] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(864), 1, - sym_number, + ACTIONS(873), 1, + anon_sym_EQ, STATE(333), 1, sym_comment, - [8188] = 4, + [8276] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(866), 1, - anon_sym_EQ, + ACTIONS(875), 1, + anon_sym_SEMI, STATE(334), 1, sym_comment, - [8201] = 4, + [8289] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(868), 1, - anon_sym_RBRACE, + ACTIONS(877), 1, + anon_sym_LPAREN, STATE(335), 1, sym_comment, - [8214] = 4, + [8302] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(870), 1, - sym_ident, + ACTIONS(724), 1, + anon_sym_SEMI, STATE(336), 1, sym_comment, - [8227] = 4, + [8315] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(872), 1, - anon_sym_group, + ACTIONS(879), 1, + sym_ident, STATE(337), 1, sym_comment, - [8240] = 4, + [8328] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(874), 1, - anon_sym_RBRACE, + ACTIONS(881), 1, + anon_sym_SEMI, STATE(338), 1, sym_comment, - [8253] = 4, + [8341] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(876), 1, + ACTIONS(883), 1, anon_sym_EQ, STATE(339), 1, sym_comment, - [8266] = 4, + [8354] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(878), 1, - anon_sym_SEMI, + ACTIONS(791), 1, + anon_sym_COMMA, STATE(340), 1, sym_comment, - [8279] = 4, + [8367] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(880), 1, - anon_sym_LPAREN, + ACTIONS(885), 1, + sym_ident, STATE(341), 1, sym_comment, - [8292] = 4, + [8380] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(882), 1, + ACTIONS(887), 1, sym_ident, STATE(342), 1, sym_comment, - [8305] = 4, + [8393] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(884), 1, - anon_sym_RPAREN, + ACTIONS(889), 1, + anon_sym_LPAREN, STATE(343), 1, sym_comment, - [8318] = 4, + [8406] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(691), 1, - anon_sym_SEMI, + ACTIONS(891), 1, + anon_sym_RBRACE, STATE(344), 1, sym_comment, - [8331] = 4, - ACTIONS(3), 1, + [8419] = 4, + ACTIONS(680), 1, anon_sym_SLASH_SLASH, - ACTIONS(5), 1, + ACTIONS(682), 1, aux_sym_comment_token2, - ACTIONS(886), 1, - sym_ident, + ACTIONS(893), 1, + aux_sym_comment_token1, STATE(345), 1, sym_comment, - [8344] = 4, + [8432] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(888), 1, + ACTIONS(895), 1, sym_ident, STATE(346), 1, sym_comment, - [8357] = 4, + [8445] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(890), 1, - anon_sym_LPAREN, + ACTIONS(529), 1, + anon_sym_RBRACE, STATE(347), 1, sym_comment, - [8370] = 4, + [8458] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(892), 1, - anon_sym_SEMI, + ACTIONS(897), 1, + sym_ident, STATE(348), 1, sym_comment, - [8383] = 4, + [8471] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(777), 1, + ACTIONS(789), 1, anon_sym_COMMA, STATE(349), 1, sym_comment, - [8396] = 4, + [8484] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(894), 1, - sym_ident, + ACTIONS(899), 1, + anon_sym_LBRACE, STATE(350), 1, sym_comment, - [8409] = 4, - ACTIONS(699), 1, + [8497] = 4, + ACTIONS(3), 1, anon_sym_SLASH_SLASH, - ACTIONS(701), 1, + ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(896), 1, - aux_sym_comment_token1, + ACTIONS(559), 1, + anon_sym_if, STATE(351), 1, sym_comment, - [8422] = 4, + [8510] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(544), 1, - anon_sym_if, + ACTIONS(783), 1, + anon_sym_COMMA, STATE(352), 1, sym_comment, - [8435] = 4, + [8523] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(517), 1, - anon_sym_RBRACE, + ACTIONS(901), 1, + anon_sym_LBRACE, STATE(353), 1, sym_comment, - [8448] = 4, + [8536] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(775), 1, - anon_sym_COMMA, + ACTIONS(903), 1, + sym_number, STATE(354), 1, sym_comment, - [8461] = 4, + [8549] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(771), 1, - anon_sym_COMMA, + ACTIONS(905), 1, + sym_number, STATE(355), 1, sym_comment, - [8474] = 4, + [8562] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(898), 1, - sym_ident, + ACTIONS(907), 1, + anon_sym_LBRACE, STATE(356), 1, sym_comment, - [8487] = 4, + [8575] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(900), 1, - anon_sym_RBRACE, + ACTIONS(750), 1, + anon_sym_SEMI, STATE(357), 1, sym_comment, - [8500] = 4, + [8588] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(902), 1, - anon_sym_LBRACE, + ACTIONS(150), 1, + anon_sym_SEMI, STATE(358), 1, sym_comment, - [8513] = 4, + [8601] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(904), 1, - anon_sym_LBRACE, + ACTIONS(909), 1, + anon_sym_RBRACE, STATE(359), 1, sym_comment, - [8526] = 4, + [8614] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(589), 1, - anon_sym_RBRACE, + ACTIONS(911), 1, + anon_sym_SEMI, STATE(360), 1, sym_comment, - [8539] = 4, + [8627] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(906), 1, - anon_sym_SEMI, + ACTIONS(913), 1, + anon_sym_LBRACE, STATE(361), 1, sym_comment, - [8552] = 4, + [8640] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(718), 1, - anon_sym_SEMI, + ACTIONS(591), 1, + anon_sym_RBRACE, STATE(362), 1, sym_comment, - [8565] = 4, + [8653] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(908), 1, - anon_sym_EQ, + ACTIONS(915), 1, + anon_sym_SEMI, STATE(363), 1, sym_comment, - [8578] = 4, + [8666] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(910), 1, - anon_sym_SEMI, + ACTIONS(917), 1, + anon_sym_LPAREN, STATE(364), 1, sym_comment, - [8591] = 4, + [8679] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(912), 1, + ACTIONS(919), 1, sym_ident, STATE(365), 1, sym_comment, - [8604] = 4, + [8692] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(914), 1, - sym_ident, + ACTIONS(921), 1, + anon_sym_EQ, STATE(366), 1, sym_comment, - [8617] = 4, + [8705] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(916), 1, - anon_sym_LPAREN, + ACTIONS(531), 1, + anon_sym_RBRACE, STATE(367), 1, sym_comment, - [8630] = 4, + [8718] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(918), 1, - sym_ident, + ACTIONS(923), 1, + anon_sym_LBRACE, STATE(368), 1, sym_comment, - [8643] = 4, + [8731] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(920), 1, + ACTIONS(925), 1, sym_ident, STATE(369), 1, sym_comment, - [8656] = 4, + [8744] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(791), 1, - anon_sym_COMMA, + ACTIONS(927), 1, + anon_sym_LBRACE, STATE(370), 1, sym_comment, - [8669] = 4, + [8757] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(922), 1, - sym_ident, + ACTIONS(797), 1, + anon_sym_COMMA, STATE(371), 1, sym_comment, - [8682] = 4, + [8770] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(924), 1, - anon_sym_LPAREN, + ACTIONS(929), 1, + sym_ident, STATE(372), 1, sym_comment, - [8695] = 4, + [8783] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(797), 1, - anon_sym_COMMA, + ACTIONS(931), 1, + anon_sym_LPAREN, STATE(373), 1, sym_comment, - [8708] = 4, + [8796] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(926), 1, - anon_sym_EQ, + ACTIONS(807), 1, + anon_sym_COMMA, STATE(374), 1, sym_comment, - [8721] = 4, + [8809] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(928), 1, - sym_ident, + ACTIONS(933), 1, + anon_sym_LBRACE, STATE(375), 1, sym_comment, - [8734] = 4, + [8822] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(809), 1, - anon_sym_SEMI, + ACTIONS(935), 1, + sym_ident, STATE(376), 1, sym_comment, - [8747] = 4, + [8835] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(663), 1, - anon_sym_if, + ACTIONS(825), 1, + anon_sym_SEMI, STATE(377), 1, sym_comment, - [8760] = 4, + [8848] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(930), 1, - anon_sym_RBRACE, + ACTIONS(678), 1, + anon_sym_if, STATE(378), 1, sym_comment, - [8773] = 4, + [8861] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(499), 1, - anon_sym_RBRACE, + ACTIONS(937), 1, + sym_ident, STATE(379), 1, sym_comment, - [8786] = 4, + [8874] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(932), 1, - anon_sym_LBRACE, + ACTIONS(939), 1, + sym_ident, STATE(380), 1, sym_comment, - [8799] = 4, + [8887] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(934), 1, - anon_sym_LBRACE, + ACTIONS(941), 1, + anon_sym_RBRACE, STATE(381), 1, sym_comment, - [8812] = 4, + [8900] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(936), 1, + ACTIONS(943), 1, anon_sym_LBRACE, STATE(382), 1, sym_comment, - [8825] = 4, + [8913] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(938), 1, - anon_sym_LBRACE, + ACTIONS(945), 1, + sym_number, STATE(383), 1, sym_comment, - [8838] = 4, + [8926] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(940), 1, - sym_number, + ACTIONS(947), 1, + anon_sym_EQ, STATE(384), 1, sym_comment, - [8851] = 4, + [8939] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(787), 1, - anon_sym_SEMI, + ACTIONS(949), 1, + anon_sym_COLON, STATE(385), 1, sym_comment, - [8864] = 4, + [8952] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(942), 1, - anon_sym_EQ, + ACTIONS(801), 1, + anon_sym_SEMI, STATE(386), 1, sym_comment, - [8877] = 4, + [8965] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(944), 1, - sym_ident, + ACTIONS(951), 1, + anon_sym_EQ, STATE(387), 1, sym_comment, - [8890] = 4, + [8978] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(946), 1, - anon_sym_LPAREN, + ACTIONS(953), 1, + sym_ident, STATE(388), 1, sym_comment, - [8903] = 4, + [8991] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(948), 1, - sym_number, + ACTIONS(955), 1, + anon_sym_LPAREN, STATE(389), 1, sym_comment, - [8916] = 4, + [9004] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(950), 1, - anon_sym_EQ, + ACTIONS(769), 1, + anon_sym_primitive, STATE(390), 1, sym_comment, - [8929] = 4, + [9017] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(952), 1, + ACTIONS(720), 1, anon_sym_SEMI, STATE(391), 1, sym_comment, - [8942] = 4, + [9030] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(954), 1, - sym_ident, + ACTIONS(957), 1, + anon_sym_SEMI, STATE(392), 1, sym_comment, - [8955] = 4, + [9043] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(956), 1, - anon_sym_COLON, + ACTIONS(959), 1, + sym_ident, STATE(393), 1, sym_comment, - [8968] = 4, + [9056] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(958), 1, - anon_sym_RBRACE, + ACTIONS(961), 1, + anon_sym_EQ, STATE(394), 1, sym_comment, - [8981] = 4, + [9069] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(960), 1, - anon_sym_RBRACE, + ACTIONS(963), 1, + anon_sym_SEMI, STATE(395), 1, sym_comment, - [8994] = 4, + [9082] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(759), 1, - anon_sym_primitive, + ACTIONS(965), 1, + sym_number, STATE(396), 1, sym_comment, - [9007] = 4, + [9095] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(735), 1, - anon_sym_SEMI, + ACTIONS(967), 1, + anon_sym_LBRACE, STATE(397), 1, sym_comment, - [9020] = 4, + [9108] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(388), 1, + ACTIONS(393), 1, anon_sym_SEMI, STATE(398), 1, sym_comment, - [9033] = 4, + [9121] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(962), 1, - sym_ident, + ACTIONS(969), 1, + anon_sym_RBRACE, STATE(399), 1, sym_comment, - [9046] = 4, + [9134] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(964), 1, - anon_sym_LBRACE, + ACTIONS(971), 1, + sym_ident, STATE(400), 1, sym_comment, - [9059] = 4, + [9147] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(966), 1, + ACTIONS(973), 1, anon_sym_LBRACE, STATE(401), 1, sym_comment, - [9072] = 4, + [9160] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(968), 1, - anon_sym_LBRACE, + ACTIONS(975), 1, + anon_sym_EQ, STATE(402), 1, sym_comment, - [9085] = 4, + [9173] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(970), 1, - anon_sym_SEMI, + ACTIONS(977), 1, + anon_sym_LBRACE, STATE(403), 1, sym_comment, - [9098] = 4, + [9186] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(972), 1, - anon_sym_EQ, + ACTIONS(979), 1, + anon_sym_SEMI, STATE(404), 1, sym_comment, - [9111] = 4, + [9199] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(683), 1, + ACTIONS(712), 1, anon_sym_RBRACE, STATE(405), 1, sym_comment, - [9124] = 4, + [9212] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(974), 1, + ACTIONS(981), 1, anon_sym_EQ, STATE(406), 1, sym_comment, - [9137] = 4, + [9225] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(976), 1, + ACTIONS(983), 1, anon_sym_COLON, STATE(407), 1, sym_comment, - [9150] = 4, + [9238] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(978), 1, + ACTIONS(985), 1, sym_ident, STATE(408), 1, sym_comment, - [9163] = 4, + [9251] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(980), 1, + ACTIONS(987), 1, ts_builtin_sym_end, STATE(409), 1, sym_comment, - [9176] = 4, + [9264] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(982), 1, + ACTIONS(989), 1, anon_sym_GT, STATE(410), 1, sym_comment, - [9189] = 4, + [9277] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(695), 1, + ACTIONS(718), 1, anon_sym_LBRACE, STATE(411), 1, sym_comment, - [9202] = 4, + [9290] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(984), 1, - anon_sym_DASH_GT, + ACTIONS(991), 1, + anon_sym_RBRACK, STATE(412), 1, sym_comment, - [9215] = 4, + [9303] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(986), 1, - sym_ident, + ACTIONS(993), 1, + anon_sym_DASH_GT, STATE(413), 1, sym_comment, - [9228] = 4, + [9316] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(988), 1, - anon_sym_RPAREN, + ACTIONS(995), 1, + sym_ident, STATE(414), 1, sym_comment, - [9241] = 4, + [9329] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(990), 1, - anon_sym_RBRACK, + ACTIONS(997), 1, + anon_sym_RPAREN, STATE(415), 1, sym_comment, - [9254] = 4, + [9342] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(992), 1, - anon_sym_LBRACE, + ACTIONS(999), 1, + anon_sym_SQUOTE, STATE(416), 1, sym_comment, - [9267] = 4, + [9355] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(379), 1, - anon_sym_SEMI, + ACTIONS(1001), 1, + anon_sym_LBRACE, STATE(417), 1, sym_comment, - [9280] = 4, + [9368] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(994), 1, - anon_sym_SQUOTE, + ACTIONS(384), 1, + anon_sym_SEMI, STATE(418), 1, sym_comment, - [9293] = 4, + [9381] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(996), 1, - sym_number, + ACTIONS(1003), 1, + anon_sym_QMARK, STATE(419), 1, sym_comment, - [9306] = 4, + [9394] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(381), 1, + ACTIONS(391), 1, anon_sym_SEMI, STATE(420), 1, sym_comment, - [9319] = 4, + [9407] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(998), 1, + ACTIONS(1005), 1, anon_sym_RBRACE, STATE(421), 1, sym_comment, - [9332] = 4, + [9420] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1000), 1, - anon_sym_QMARK, + ACTIONS(374), 1, + anon_sym_SEMI, STATE(422), 1, sym_comment, - [9345] = 4, + [9433] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1002), 1, + ACTIONS(1007), 1, sym_ident, STATE(423), 1, sym_comment, - [9358] = 4, + [9446] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1004), 1, + ACTIONS(1009), 1, anon_sym_RPAREN, STATE(424), 1, sym_comment, - [9371] = 4, + [9459] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1006), 1, + ACTIONS(1011), 1, anon_sym_RBRACE, STATE(425), 1, sym_comment, - [9384] = 4, + [9472] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1008), 1, + ACTIONS(1013), 1, sym_ident, STATE(426), 1, sym_comment, - [9397] = 4, + [9485] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1010), 1, + ACTIONS(1015), 1, anon_sym_RPAREN, STATE(427), 1, sym_comment, - [9410] = 4, + [9498] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1012), 1, + ACTIONS(1017), 1, sym_number, STATE(428), 1, sym_comment, - [9423] = 4, + [9511] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(105), 1, + ACTIONS(121), 1, ts_builtin_sym_end, STATE(429), 1, sym_comment, - [9436] = 4, + [9524] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1014), 1, + ACTIONS(1019), 1, sym_ident, STATE(430), 1, sym_comment, - [9449] = 4, + [9537] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1016), 1, + ACTIONS(1021), 1, sym_ident, STATE(431), 1, sym_comment, - [9462] = 4, + [9550] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1018), 1, + ACTIONS(1023), 1, ts_builtin_sym_end, STATE(432), 1, sym_comment, - [9475] = 4, + [9563] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1020), 1, + ACTIONS(1025), 1, sym_number, STATE(433), 1, sym_comment, - [9488] = 4, + [9576] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(369), 1, - anon_sym_SEMI, + ACTIONS(1027), 1, + sym_ident, STATE(434), 1, sym_comment, - [9501] = 4, + [9589] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1022), 1, - sym_ident, + ACTIONS(1029), 1, + anon_sym_LBRACE, STATE(435), 1, sym_comment, - [9514] = 4, + [9602] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1024), 1, + ACTIONS(1031), 1, anon_sym_LBRACE, STATE(436), 1, sym_comment, - [9527] = 4, + [9615] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1026), 1, - anon_sym_LBRACE, + ACTIONS(1033), 1, + sym_number, STATE(437), 1, sym_comment, - [9540] = 4, + [9628] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1028), 1, - sym_number, + ACTIONS(1035), 1, + sym_ident, STATE(438), 1, sym_comment, - [9553] = 4, + [9641] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(542), 1, + ACTIONS(561), 1, anon_sym_if, STATE(439), 1, sym_comment, - [9566] = 4, + [9654] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1030), 1, + ACTIONS(1037), 1, anon_sym_SEMI, STATE(440), 1, sym_comment, - [9579] = 4, - ACTIONS(699), 1, + [9667] = 4, + ACTIONS(680), 1, anon_sym_SLASH_SLASH, - ACTIONS(701), 1, + ACTIONS(682), 1, aux_sym_comment_token2, - ACTIONS(1032), 1, + ACTIONS(1039), 1, anon_sym_LF, STATE(441), 1, sym_comment, - [9592] = 4, + [9680] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(661), 1, + ACTIONS(642), 1, anon_sym_if, STATE(442), 1, sym_comment, - [9605] = 4, + [9693] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1034), 1, - sym_ident, + ACTIONS(1041), 1, + anon_sym_RBRACE, STATE(443), 1, sym_comment, - [9618] = 4, + [9706] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1036), 1, + ACTIONS(1043), 1, sym_number, STATE(444), 1, sym_comment, - [9631] = 4, + [9719] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(99), 1, + ACTIONS(103), 1, ts_builtin_sym_end, STATE(445), 1, sym_comment, - [9644] = 4, + [9732] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1038), 1, + ACTIONS(1045), 1, sym_number, STATE(446), 1, sym_comment, - [9657] = 4, + [9745] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1040), 1, + ACTIONS(1047), 1, anon_sym_EQ, STATE(447), 1, sym_comment, - [9670] = 4, + [9758] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1042), 1, + ACTIONS(1049), 1, aux_sym_metadata_token1, STATE(448), 1, sym_comment, - [9683] = 4, + [9771] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1044), 1, + ACTIONS(1051), 1, ts_builtin_sym_end, STATE(449), 1, sym_comment, - [9696] = 4, + [9784] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1046), 1, + ACTIONS(1053), 1, anon_sym_EQ, STATE(450), 1, sym_comment, - [9709] = 4, + [9797] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1048), 1, + ACTIONS(1055), 1, anon_sym_LBRACE, STATE(451), 1, sym_comment, - [9722] = 4, + [9810] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1050), 1, + ACTIONS(1057), 1, sym_number, STATE(452), 1, sym_comment, - [9735] = 4, + [9823] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1052), 1, - anon_sym_RBRACE, + ACTIONS(1059), 1, + anon_sym_RPAREN, STATE(453), 1, sym_comment, - [9748] = 4, + [9836] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1054), 1, + ACTIONS(1061), 1, sym_string, STATE(454), 1, sym_comment, - [9761] = 4, + [9849] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1056), 1, + ACTIONS(1063), 1, sym_ident, STATE(455), 1, sym_comment, - [9774] = 4, + [9862] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1058), 1, + ACTIONS(1065), 1, sym_number, STATE(456), 1, sym_comment, - [9787] = 4, + [9875] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1060), 1, + ACTIONS(1067), 1, sym_ident, STATE(457), 1, sym_comment, - [9800] = 4, + [9888] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1062), 1, + ACTIONS(1069), 1, aux_sym_metadata_token1, STATE(458), 1, sym_comment, - [9813] = 4, + [9901] = 4, ACTIONS(3), 1, anon_sym_SLASH_SLASH, ACTIONS(5), 1, aux_sym_comment_token2, - ACTIONS(1064), 1, + ACTIONS(1071), 1, sym_string, STATE(459), 1, sym_comment, - [9826] = 1, - ACTIONS(1066), 1, + [9914] = 4, + ACTIONS(3), 1, + anon_sym_SLASH_SLASH, + ACTIONS(5), 1, + aux_sym_comment_token2, + ACTIONS(1073), 1, + sym_number, + STATE(460), 1, + sym_comment, + [9927] = 1, + ACTIONS(1075), 1, ts_builtin_sym_end, - [9830] = 1, - ACTIONS(1068), 1, + [9931] = 1, + ACTIONS(1077), 1, ts_builtin_sym_end, }; static const uint32_t ts_small_parse_table_map[] = { [SMALL_STATE(2)] = 0, - [SMALL_STATE(3)] = 67, - [SMALL_STATE(4)] = 134, - [SMALL_STATE(5)] = 201, - [SMALL_STATE(6)] = 268, - [SMALL_STATE(7)] = 335, - [SMALL_STATE(8)] = 400, - [SMALL_STATE(9)] = 467, - [SMALL_STATE(10)] = 534, - [SMALL_STATE(11)] = 601, - [SMALL_STATE(12)] = 668, - [SMALL_STATE(13)] = 735, - [SMALL_STATE(14)] = 802, - [SMALL_STATE(15)] = 869, - [SMALL_STATE(16)] = 933, - [SMALL_STATE(17)] = 994, - [SMALL_STATE(18)] = 1055, - [SMALL_STATE(19)] = 1116, - [SMALL_STATE(20)] = 1176, - [SMALL_STATE(21)] = 1205, - [SMALL_STATE(22)] = 1256, - [SMALL_STATE(23)] = 1307, - [SMALL_STATE(24)] = 1339, - [SMALL_STATE(25)] = 1384, - [SMALL_STATE(26)] = 1433, - [SMALL_STATE(27)] = 1482, - [SMALL_STATE(28)] = 1523, - [SMALL_STATE(29)] = 1553, - [SMALL_STATE(30)] = 1593, - [SMALL_STATE(31)] = 1619, - [SMALL_STATE(32)] = 1659, - [SMALL_STATE(33)] = 1687, - [SMALL_STATE(34)] = 1727, - [SMALL_STATE(35)] = 1767, - [SMALL_STATE(36)] = 1795, - [SMALL_STATE(37)] = 1835, - [SMALL_STATE(38)] = 1861, - [SMALL_STATE(39)] = 1889, - [SMALL_STATE(40)] = 1915, - [SMALL_STATE(41)] = 1957, - [SMALL_STATE(42)] = 1984, - [SMALL_STATE(43)] = 2009, - [SMALL_STATE(44)] = 2034, - [SMALL_STATE(45)] = 2059, - [SMALL_STATE(46)] = 2084, - [SMALL_STATE(47)] = 2109, - [SMALL_STATE(48)] = 2134, - [SMALL_STATE(49)] = 2159, - [SMALL_STATE(50)] = 2184, - [SMALL_STATE(51)] = 2211, - [SMALL_STATE(52)] = 2240, - [SMALL_STATE(53)] = 2265, - [SMALL_STATE(54)] = 2296, - [SMALL_STATE(55)] = 2329, - [SMALL_STATE(56)] = 2364, - [SMALL_STATE(57)] = 2389, - [SMALL_STATE(58)] = 2414, - [SMALL_STATE(59)] = 2439, - [SMALL_STATE(60)] = 2464, - [SMALL_STATE(61)] = 2489, - [SMALL_STATE(62)] = 2514, - [SMALL_STATE(63)] = 2539, - [SMALL_STATE(64)] = 2564, - [SMALL_STATE(65)] = 2589, - [SMALL_STATE(66)] = 2614, - [SMALL_STATE(67)] = 2639, - [SMALL_STATE(68)] = 2664, - [SMALL_STATE(69)] = 2689, - [SMALL_STATE(70)] = 2714, - [SMALL_STATE(71)] = 2739, - [SMALL_STATE(72)] = 2764, - [SMALL_STATE(73)] = 2789, - [SMALL_STATE(74)] = 2814, - [SMALL_STATE(75)] = 2839, - [SMALL_STATE(76)] = 2864, - [SMALL_STATE(77)] = 2889, - [SMALL_STATE(78)] = 2914, - [SMALL_STATE(79)] = 2939, - [SMALL_STATE(80)] = 2963, - [SMALL_STATE(81)] = 3003, - [SMALL_STATE(82)] = 3043, - [SMALL_STATE(83)] = 3083, - [SMALL_STATE(84)] = 3109, - [SMALL_STATE(85)] = 3149, - [SMALL_STATE(86)] = 3173, - [SMALL_STATE(87)] = 3206, - [SMALL_STATE(88)] = 3241, - [SMALL_STATE(89)] = 3276, - [SMALL_STATE(90)] = 3307, - [SMALL_STATE(91)] = 3338, - [SMALL_STATE(92)] = 3369, - [SMALL_STATE(93)] = 3400, - [SMALL_STATE(94)] = 3435, - [SMALL_STATE(95)] = 3466, - [SMALL_STATE(96)] = 3501, - [SMALL_STATE(97)] = 3532, - [SMALL_STATE(98)] = 3567, - [SMALL_STATE(99)] = 3602, - [SMALL_STATE(100)] = 3637, - [SMALL_STATE(101)] = 3672, - [SMALL_STATE(102)] = 3707, - [SMALL_STATE(103)] = 3742, - [SMALL_STATE(104)] = 3777, - [SMALL_STATE(105)] = 3808, - [SMALL_STATE(106)] = 3839, - [SMALL_STATE(107)] = 3870, - [SMALL_STATE(108)] = 3905, - [SMALL_STATE(109)] = 3936, - [SMALL_STATE(110)] = 3970, - [SMALL_STATE(111)] = 3990, - [SMALL_STATE(112)] = 4024, - [SMALL_STATE(113)] = 4044, - [SMALL_STATE(114)] = 4064, - [SMALL_STATE(115)] = 4084, - [SMALL_STATE(116)] = 4104, - [SMALL_STATE(117)] = 4136, - [SMALL_STATE(118)] = 4156, - [SMALL_STATE(119)] = 4190, - [SMALL_STATE(120)] = 4210, - [SMALL_STATE(121)] = 4229, - [SMALL_STATE(122)] = 4260, - [SMALL_STATE(123)] = 4279, - [SMALL_STATE(124)] = 4298, - [SMALL_STATE(125)] = 4329, - [SMALL_STATE(126)] = 4348, - [SMALL_STATE(127)] = 4373, - [SMALL_STATE(128)] = 4404, - [SMALL_STATE(129)] = 4429, - [SMALL_STATE(130)] = 4460, - [SMALL_STATE(131)] = 4479, - [SMALL_STATE(132)] = 4510, - [SMALL_STATE(133)] = 4529, - [SMALL_STATE(134)] = 4560, - [SMALL_STATE(135)] = 4579, - [SMALL_STATE(136)] = 4610, - [SMALL_STATE(137)] = 4635, - [SMALL_STATE(138)] = 4654, - [SMALL_STATE(139)] = 4683, - [SMALL_STATE(140)] = 4714, - [SMALL_STATE(141)] = 4733, - [SMALL_STATE(142)] = 4762, - [SMALL_STATE(143)] = 4781, - [SMALL_STATE(144)] = 4812, - [SMALL_STATE(145)] = 4831, - [SMALL_STATE(146)] = 4862, - [SMALL_STATE(147)] = 4893, - [SMALL_STATE(148)] = 4924, - [SMALL_STATE(149)] = 4949, - [SMALL_STATE(150)] = 4977, - [SMALL_STATE(151)] = 4999, - [SMALL_STATE(152)] = 5027, - [SMALL_STATE(153)] = 5051, - [SMALL_STATE(154)] = 5076, - [SMALL_STATE(155)] = 5095, - [SMALL_STATE(156)] = 5120, - [SMALL_STATE(157)] = 5139, - [SMALL_STATE(158)] = 5158, - [SMALL_STATE(159)] = 5183, - [SMALL_STATE(160)] = 5208, - [SMALL_STATE(161)] = 5227, - [SMALL_STATE(162)] = 5246, - [SMALL_STATE(163)] = 5267, - [SMALL_STATE(164)] = 5286, - [SMALL_STATE(165)] = 5305, - [SMALL_STATE(166)] = 5330, - [SMALL_STATE(167)] = 5355, - [SMALL_STATE(168)] = 5376, - [SMALL_STATE(169)] = 5395, - [SMALL_STATE(170)] = 5416, - [SMALL_STATE(171)] = 5441, - [SMALL_STATE(172)] = 5460, - [SMALL_STATE(173)] = 5481, - [SMALL_STATE(174)] = 5500, - [SMALL_STATE(175)] = 5519, - [SMALL_STATE(176)] = 5539, - [SMALL_STATE(177)] = 5557, - [SMALL_STATE(178)] = 5579, - [SMALL_STATE(179)] = 5601, - [SMALL_STATE(180)] = 5623, - [SMALL_STATE(181)] = 5645, - [SMALL_STATE(182)] = 5665, - [SMALL_STATE(183)] = 5683, - [SMALL_STATE(184)] = 5705, - [SMALL_STATE(185)] = 5727, - [SMALL_STATE(186)] = 5749, - [SMALL_STATE(187)] = 5769, - [SMALL_STATE(188)] = 5791, - [SMALL_STATE(189)] = 5811, - [SMALL_STATE(190)] = 5833, - [SMALL_STATE(191)] = 5855, - [SMALL_STATE(192)] = 5871, - [SMALL_STATE(193)] = 5891, - [SMALL_STATE(194)] = 5909, - [SMALL_STATE(195)] = 5931, - [SMALL_STATE(196)] = 5949, - [SMALL_STATE(197)] = 5971, - [SMALL_STATE(198)] = 5991, - [SMALL_STATE(199)] = 6007, - [SMALL_STATE(200)] = 6025, - [SMALL_STATE(201)] = 6042, - [SMALL_STATE(202)] = 6059, - [SMALL_STATE(203)] = 6078, - [SMALL_STATE(204)] = 6097, - [SMALL_STATE(205)] = 6114, - [SMALL_STATE(206)] = 6133, - [SMALL_STATE(207)] = 6152, - [SMALL_STATE(208)] = 6171, - [SMALL_STATE(209)] = 6190, - [SMALL_STATE(210)] = 6205, - [SMALL_STATE(211)] = 6224, - [SMALL_STATE(212)] = 6243, - [SMALL_STATE(213)] = 6262, - [SMALL_STATE(214)] = 6277, - [SMALL_STATE(215)] = 6296, - [SMALL_STATE(216)] = 6315, - [SMALL_STATE(217)] = 6330, - [SMALL_STATE(218)] = 6349, - [SMALL_STATE(219)] = 6368, - [SMALL_STATE(220)] = 6383, - [SMALL_STATE(221)] = 6400, - [SMALL_STATE(222)] = 6417, - [SMALL_STATE(223)] = 6436, - [SMALL_STATE(224)] = 6453, - [SMALL_STATE(225)] = 6472, - [SMALL_STATE(226)] = 6487, - [SMALL_STATE(227)] = 6502, - [SMALL_STATE(228)] = 6521, - [SMALL_STATE(229)] = 6540, - [SMALL_STATE(230)] = 6559, - [SMALL_STATE(231)] = 6576, - [SMALL_STATE(232)] = 6591, - [SMALL_STATE(233)] = 6610, - [SMALL_STATE(234)] = 6625, - [SMALL_STATE(235)] = 6640, - [SMALL_STATE(236)] = 6655, - [SMALL_STATE(237)] = 6674, - [SMALL_STATE(238)] = 6693, - [SMALL_STATE(239)] = 6712, - [SMALL_STATE(240)] = 6731, - [SMALL_STATE(241)] = 6748, - [SMALL_STATE(242)] = 6763, - [SMALL_STATE(243)] = 6782, - [SMALL_STATE(244)] = 6797, - [SMALL_STATE(245)] = 6812, - [SMALL_STATE(246)] = 6827, - [SMALL_STATE(247)] = 6842, - [SMALL_STATE(248)] = 6857, - [SMALL_STATE(249)] = 6876, - [SMALL_STATE(250)] = 6895, - [SMALL_STATE(251)] = 6914, - [SMALL_STATE(252)] = 6933, - [SMALL_STATE(253)] = 6952, - [SMALL_STATE(254)] = 6967, - [SMALL_STATE(255)] = 6986, - [SMALL_STATE(256)] = 7005, - [SMALL_STATE(257)] = 7019, - [SMALL_STATE(258)] = 7033, - [SMALL_STATE(259)] = 7049, - [SMALL_STATE(260)] = 7065, - [SMALL_STATE(261)] = 7081, - [SMALL_STATE(262)] = 7097, - [SMALL_STATE(263)] = 7111, - [SMALL_STATE(264)] = 7127, - [SMALL_STATE(265)] = 7143, - [SMALL_STATE(266)] = 7159, - [SMALL_STATE(267)] = 7175, - [SMALL_STATE(268)] = 7191, - [SMALL_STATE(269)] = 7207, - [SMALL_STATE(270)] = 7223, - [SMALL_STATE(271)] = 7239, - [SMALL_STATE(272)] = 7255, - [SMALL_STATE(273)] = 7271, - [SMALL_STATE(274)] = 7287, - [SMALL_STATE(275)] = 7303, - [SMALL_STATE(276)] = 7319, - [SMALL_STATE(277)] = 7335, - [SMALL_STATE(278)] = 7349, - [SMALL_STATE(279)] = 7365, - [SMALL_STATE(280)] = 7381, - [SMALL_STATE(281)] = 7397, - [SMALL_STATE(282)] = 7413, - [SMALL_STATE(283)] = 7429, - [SMALL_STATE(284)] = 7443, - [SMALL_STATE(285)] = 7459, - [SMALL_STATE(286)] = 7473, - [SMALL_STATE(287)] = 7489, - [SMALL_STATE(288)] = 7505, - [SMALL_STATE(289)] = 7521, - [SMALL_STATE(290)] = 7537, - [SMALL_STATE(291)] = 7551, - [SMALL_STATE(292)] = 7567, - [SMALL_STATE(293)] = 7583, - [SMALL_STATE(294)] = 7599, - [SMALL_STATE(295)] = 7615, - [SMALL_STATE(296)] = 7631, - [SMALL_STATE(297)] = 7647, - [SMALL_STATE(298)] = 7663, - [SMALL_STATE(299)] = 7679, - [SMALL_STATE(300)] = 7695, - [SMALL_STATE(301)] = 7709, - [SMALL_STATE(302)] = 7723, - [SMALL_STATE(303)] = 7737, - [SMALL_STATE(304)] = 7753, - [SMALL_STATE(305)] = 7767, - [SMALL_STATE(306)] = 7783, - [SMALL_STATE(307)] = 7799, - [SMALL_STATE(308)] = 7813, - [SMALL_STATE(309)] = 7829, - [SMALL_STATE(310)] = 7843, - [SMALL_STATE(311)] = 7859, - [SMALL_STATE(312)] = 7873, - [SMALL_STATE(313)] = 7889, - [SMALL_STATE(314)] = 7903, - [SMALL_STATE(315)] = 7919, - [SMALL_STATE(316)] = 7935, - [SMALL_STATE(317)] = 7949, - [SMALL_STATE(318)] = 7963, - [SMALL_STATE(319)] = 7979, - [SMALL_STATE(320)] = 7995, - [SMALL_STATE(321)] = 8009, - [SMALL_STATE(322)] = 8025, - [SMALL_STATE(323)] = 8041, - [SMALL_STATE(324)] = 8055, - [SMALL_STATE(325)] = 8071, - [SMALL_STATE(326)] = 8084, - [SMALL_STATE(327)] = 8097, - [SMALL_STATE(328)] = 8110, - [SMALL_STATE(329)] = 8123, - [SMALL_STATE(330)] = 8136, - [SMALL_STATE(331)] = 8149, - [SMALL_STATE(332)] = 8162, - [SMALL_STATE(333)] = 8175, - [SMALL_STATE(334)] = 8188, - [SMALL_STATE(335)] = 8201, - [SMALL_STATE(336)] = 8214, - [SMALL_STATE(337)] = 8227, - [SMALL_STATE(338)] = 8240, - [SMALL_STATE(339)] = 8253, - [SMALL_STATE(340)] = 8266, - [SMALL_STATE(341)] = 8279, - [SMALL_STATE(342)] = 8292, - [SMALL_STATE(343)] = 8305, - [SMALL_STATE(344)] = 8318, - [SMALL_STATE(345)] = 8331, - [SMALL_STATE(346)] = 8344, - [SMALL_STATE(347)] = 8357, - [SMALL_STATE(348)] = 8370, - [SMALL_STATE(349)] = 8383, - [SMALL_STATE(350)] = 8396, - [SMALL_STATE(351)] = 8409, - [SMALL_STATE(352)] = 8422, - [SMALL_STATE(353)] = 8435, - [SMALL_STATE(354)] = 8448, - [SMALL_STATE(355)] = 8461, - [SMALL_STATE(356)] = 8474, - [SMALL_STATE(357)] = 8487, - [SMALL_STATE(358)] = 8500, - [SMALL_STATE(359)] = 8513, - [SMALL_STATE(360)] = 8526, - [SMALL_STATE(361)] = 8539, - [SMALL_STATE(362)] = 8552, - [SMALL_STATE(363)] = 8565, - [SMALL_STATE(364)] = 8578, - [SMALL_STATE(365)] = 8591, - [SMALL_STATE(366)] = 8604, - [SMALL_STATE(367)] = 8617, - [SMALL_STATE(368)] = 8630, - [SMALL_STATE(369)] = 8643, - [SMALL_STATE(370)] = 8656, - [SMALL_STATE(371)] = 8669, - [SMALL_STATE(372)] = 8682, - [SMALL_STATE(373)] = 8695, - [SMALL_STATE(374)] = 8708, - [SMALL_STATE(375)] = 8721, - [SMALL_STATE(376)] = 8734, - [SMALL_STATE(377)] = 8747, - [SMALL_STATE(378)] = 8760, - [SMALL_STATE(379)] = 8773, - [SMALL_STATE(380)] = 8786, - [SMALL_STATE(381)] = 8799, - [SMALL_STATE(382)] = 8812, - [SMALL_STATE(383)] = 8825, - [SMALL_STATE(384)] = 8838, - [SMALL_STATE(385)] = 8851, - [SMALL_STATE(386)] = 8864, - [SMALL_STATE(387)] = 8877, - [SMALL_STATE(388)] = 8890, - [SMALL_STATE(389)] = 8903, - [SMALL_STATE(390)] = 8916, - [SMALL_STATE(391)] = 8929, - [SMALL_STATE(392)] = 8942, - [SMALL_STATE(393)] = 8955, - [SMALL_STATE(394)] = 8968, - [SMALL_STATE(395)] = 8981, - [SMALL_STATE(396)] = 8994, - [SMALL_STATE(397)] = 9007, - [SMALL_STATE(398)] = 9020, - [SMALL_STATE(399)] = 9033, - [SMALL_STATE(400)] = 9046, - [SMALL_STATE(401)] = 9059, - [SMALL_STATE(402)] = 9072, - [SMALL_STATE(403)] = 9085, - [SMALL_STATE(404)] = 9098, - [SMALL_STATE(405)] = 9111, - [SMALL_STATE(406)] = 9124, - [SMALL_STATE(407)] = 9137, - [SMALL_STATE(408)] = 9150, - [SMALL_STATE(409)] = 9163, - [SMALL_STATE(410)] = 9176, - [SMALL_STATE(411)] = 9189, - [SMALL_STATE(412)] = 9202, - [SMALL_STATE(413)] = 9215, - [SMALL_STATE(414)] = 9228, - [SMALL_STATE(415)] = 9241, - [SMALL_STATE(416)] = 9254, - [SMALL_STATE(417)] = 9267, - [SMALL_STATE(418)] = 9280, - [SMALL_STATE(419)] = 9293, - [SMALL_STATE(420)] = 9306, - [SMALL_STATE(421)] = 9319, - [SMALL_STATE(422)] = 9332, - [SMALL_STATE(423)] = 9345, - [SMALL_STATE(424)] = 9358, - [SMALL_STATE(425)] = 9371, - [SMALL_STATE(426)] = 9384, - [SMALL_STATE(427)] = 9397, - [SMALL_STATE(428)] = 9410, - [SMALL_STATE(429)] = 9423, - [SMALL_STATE(430)] = 9436, - [SMALL_STATE(431)] = 9449, - [SMALL_STATE(432)] = 9462, - [SMALL_STATE(433)] = 9475, - [SMALL_STATE(434)] = 9488, - [SMALL_STATE(435)] = 9501, - [SMALL_STATE(436)] = 9514, - [SMALL_STATE(437)] = 9527, - [SMALL_STATE(438)] = 9540, - [SMALL_STATE(439)] = 9553, - [SMALL_STATE(440)] = 9566, - [SMALL_STATE(441)] = 9579, - [SMALL_STATE(442)] = 9592, - [SMALL_STATE(443)] = 9605, - [SMALL_STATE(444)] = 9618, - [SMALL_STATE(445)] = 9631, - [SMALL_STATE(446)] = 9644, - [SMALL_STATE(447)] = 9657, - [SMALL_STATE(448)] = 9670, - [SMALL_STATE(449)] = 9683, - [SMALL_STATE(450)] = 9696, - [SMALL_STATE(451)] = 9709, - [SMALL_STATE(452)] = 9722, - [SMALL_STATE(453)] = 9735, - [SMALL_STATE(454)] = 9748, - [SMALL_STATE(455)] = 9761, - [SMALL_STATE(456)] = 9774, - [SMALL_STATE(457)] = 9787, - [SMALL_STATE(458)] = 9800, - [SMALL_STATE(459)] = 9813, - [SMALL_STATE(460)] = 9826, - [SMALL_STATE(461)] = 9830, + [SMALL_STATE(3)] = 70, + [SMALL_STATE(4)] = 135, + [SMALL_STATE(5)] = 202, + [SMALL_STATE(6)] = 269, + [SMALL_STATE(7)] = 336, + [SMALL_STATE(8)] = 403, + [SMALL_STATE(9)] = 470, + [SMALL_STATE(10)] = 537, + [SMALL_STATE(11)] = 604, + [SMALL_STATE(12)] = 671, + [SMALL_STATE(13)] = 738, + [SMALL_STATE(14)] = 805, + [SMALL_STATE(15)] = 872, + [SMALL_STATE(16)] = 939, + [SMALL_STATE(17)] = 1006, + [SMALL_STATE(18)] = 1067, + [SMALL_STATE(19)] = 1128, + [SMALL_STATE(20)] = 1189, + [SMALL_STATE(21)] = 1249, + [SMALL_STATE(22)] = 1300, + [SMALL_STATE(23)] = 1351, + [SMALL_STATE(24)] = 1380, + [SMALL_STATE(25)] = 1431, + [SMALL_STATE(26)] = 1479, + [SMALL_STATE(27)] = 1511, + [SMALL_STATE(28)] = 1557, + [SMALL_STATE(29)] = 1606, + [SMALL_STATE(30)] = 1647, + [SMALL_STATE(31)] = 1696, + [SMALL_STATE(32)] = 1736, + [SMALL_STATE(33)] = 1764, + [SMALL_STATE(34)] = 1804, + [SMALL_STATE(35)] = 1832, + [SMALL_STATE(36)] = 1872, + [SMALL_STATE(37)] = 1898, + [SMALL_STATE(38)] = 1924, + [SMALL_STATE(39)] = 1952, + [SMALL_STATE(40)] = 1978, + [SMALL_STATE(41)] = 2018, + [SMALL_STATE(42)] = 2048, + [SMALL_STATE(43)] = 2073, + [SMALL_STATE(44)] = 2098, + [SMALL_STATE(45)] = 2123, + [SMALL_STATE(46)] = 2148, + [SMALL_STATE(47)] = 2173, + [SMALL_STATE(48)] = 2198, + [SMALL_STATE(49)] = 2223, + [SMALL_STATE(50)] = 2248, + [SMALL_STATE(51)] = 2273, + [SMALL_STATE(52)] = 2298, + [SMALL_STATE(53)] = 2323, + [SMALL_STATE(54)] = 2348, + [SMALL_STATE(55)] = 2373, + [SMALL_STATE(56)] = 2398, + [SMALL_STATE(57)] = 2423, + [SMALL_STATE(58)] = 2448, + [SMALL_STATE(59)] = 2473, + [SMALL_STATE(60)] = 2500, + [SMALL_STATE(61)] = 2527, + [SMALL_STATE(62)] = 2556, + [SMALL_STATE(63)] = 2581, + [SMALL_STATE(64)] = 2612, + [SMALL_STATE(65)] = 2645, + [SMALL_STATE(66)] = 2680, + [SMALL_STATE(67)] = 2705, + [SMALL_STATE(68)] = 2730, + [SMALL_STATE(69)] = 2755, + [SMALL_STATE(70)] = 2780, + [SMALL_STATE(71)] = 2805, + [SMALL_STATE(72)] = 2830, + [SMALL_STATE(73)] = 2855, + [SMALL_STATE(74)] = 2880, + [SMALL_STATE(75)] = 2905, + [SMALL_STATE(76)] = 2930, + [SMALL_STATE(77)] = 2955, + [SMALL_STATE(78)] = 2980, + [SMALL_STATE(79)] = 3005, + [SMALL_STATE(80)] = 3030, + [SMALL_STATE(81)] = 3070, + [SMALL_STATE(82)] = 3110, + [SMALL_STATE(83)] = 3136, + [SMALL_STATE(84)] = 3176, + [SMALL_STATE(85)] = 3216, + [SMALL_STATE(86)] = 3240, + [SMALL_STATE(87)] = 3264, + [SMALL_STATE(88)] = 3299, + [SMALL_STATE(89)] = 3330, + [SMALL_STATE(90)] = 3361, + [SMALL_STATE(91)] = 3392, + [SMALL_STATE(92)] = 3427, + [SMALL_STATE(93)] = 3462, + [SMALL_STATE(94)] = 3497, + [SMALL_STATE(95)] = 3528, + [SMALL_STATE(96)] = 3559, + [SMALL_STATE(97)] = 3594, + [SMALL_STATE(98)] = 3629, + [SMALL_STATE(99)] = 3662, + [SMALL_STATE(100)] = 3697, + [SMALL_STATE(101)] = 3728, + [SMALL_STATE(102)] = 3759, + [SMALL_STATE(103)] = 3794, + [SMALL_STATE(104)] = 3825, + [SMALL_STATE(105)] = 3856, + [SMALL_STATE(106)] = 3887, + [SMALL_STATE(107)] = 3922, + [SMALL_STATE(108)] = 3957, + [SMALL_STATE(109)] = 3992, + [SMALL_STATE(110)] = 4027, + [SMALL_STATE(111)] = 4047, + [SMALL_STATE(112)] = 4067, + [SMALL_STATE(113)] = 4087, + [SMALL_STATE(114)] = 4107, + [SMALL_STATE(115)] = 4127, + [SMALL_STATE(116)] = 4161, + [SMALL_STATE(117)] = 4193, + [SMALL_STATE(118)] = 4213, + [SMALL_STATE(119)] = 4247, + [SMALL_STATE(120)] = 4267, + [SMALL_STATE(121)] = 4301, + [SMALL_STATE(122)] = 4321, + [SMALL_STATE(123)] = 4341, + [SMALL_STATE(124)] = 4360, + [SMALL_STATE(125)] = 4391, + [SMALL_STATE(126)] = 4410, + [SMALL_STATE(127)] = 4441, + [SMALL_STATE(128)] = 4460, + [SMALL_STATE(129)] = 4479, + [SMALL_STATE(130)] = 4504, + [SMALL_STATE(131)] = 4535, + [SMALL_STATE(132)] = 4566, + [SMALL_STATE(133)] = 4585, + [SMALL_STATE(134)] = 4614, + [SMALL_STATE(135)] = 4645, + [SMALL_STATE(136)] = 4664, + [SMALL_STATE(137)] = 4687, + [SMALL_STATE(138)] = 4712, + [SMALL_STATE(139)] = 4743, + [SMALL_STATE(140)] = 4774, + [SMALL_STATE(141)] = 4793, + [SMALL_STATE(142)] = 4824, + [SMALL_STATE(143)] = 4855, + [SMALL_STATE(144)] = 4886, + [SMALL_STATE(145)] = 4917, + [SMALL_STATE(146)] = 4942, + [SMALL_STATE(147)] = 4971, + [SMALL_STATE(148)] = 4990, + [SMALL_STATE(149)] = 5009, + [SMALL_STATE(150)] = 5034, + [SMALL_STATE(151)] = 5065, + [SMALL_STATE(152)] = 5085, + [SMALL_STATE(153)] = 5105, + [SMALL_STATE(154)] = 5133, + [SMALL_STATE(155)] = 5161, + [SMALL_STATE(156)] = 5181, + [SMALL_STATE(157)] = 5201, + [SMALL_STATE(158)] = 5221, + [SMALL_STATE(159)] = 5241, + [SMALL_STATE(160)] = 5261, + [SMALL_STATE(161)] = 5285, + [SMALL_STATE(162)] = 5310, + [SMALL_STATE(163)] = 5329, + [SMALL_STATE(164)] = 5348, + [SMALL_STATE(165)] = 5373, + [SMALL_STATE(166)] = 5392, + [SMALL_STATE(167)] = 5417, + [SMALL_STATE(168)] = 5442, + [SMALL_STATE(169)] = 5463, + [SMALL_STATE(170)] = 5484, + [SMALL_STATE(171)] = 5509, + [SMALL_STATE(172)] = 5534, + [SMALL_STATE(173)] = 5559, + [SMALL_STATE(174)] = 5578, + [SMALL_STATE(175)] = 5599, + [SMALL_STATE(176)] = 5620, + [SMALL_STATE(177)] = 5636, + [SMALL_STATE(178)] = 5654, + [SMALL_STATE(179)] = 5670, + [SMALL_STATE(180)] = 5692, + [SMALL_STATE(181)] = 5714, + [SMALL_STATE(182)] = 5732, + [SMALL_STATE(183)] = 5752, + [SMALL_STATE(184)] = 5774, + [SMALL_STATE(185)] = 5796, + [SMALL_STATE(186)] = 5816, + [SMALL_STATE(187)] = 5838, + [SMALL_STATE(188)] = 5860, + [SMALL_STATE(189)] = 5882, + [SMALL_STATE(190)] = 5904, + [SMALL_STATE(191)] = 5924, + [SMALL_STATE(192)] = 5942, + [SMALL_STATE(193)] = 5962, + [SMALL_STATE(194)] = 5984, + [SMALL_STATE(195)] = 6006, + [SMALL_STATE(196)] = 6028, + [SMALL_STATE(197)] = 6046, + [SMALL_STATE(198)] = 6066, + [SMALL_STATE(199)] = 6084, + [SMALL_STATE(200)] = 6104, + [SMALL_STATE(201)] = 6126, + [SMALL_STATE(202)] = 6145, + [SMALL_STATE(203)] = 6162, + [SMALL_STATE(204)] = 6181, + [SMALL_STATE(205)] = 6196, + [SMALL_STATE(206)] = 6213, + [SMALL_STATE(207)] = 6230, + [SMALL_STATE(208)] = 6249, + [SMALL_STATE(209)] = 6268, + [SMALL_STATE(210)] = 6283, + [SMALL_STATE(211)] = 6302, + [SMALL_STATE(212)] = 6321, + [SMALL_STATE(213)] = 6336, + [SMALL_STATE(214)] = 6351, + [SMALL_STATE(215)] = 6366, + [SMALL_STATE(216)] = 6385, + [SMALL_STATE(217)] = 6400, + [SMALL_STATE(218)] = 6419, + [SMALL_STATE(219)] = 6434, + [SMALL_STATE(220)] = 6453, + [SMALL_STATE(221)] = 6468, + [SMALL_STATE(222)] = 6487, + [SMALL_STATE(223)] = 6506, + [SMALL_STATE(224)] = 6525, + [SMALL_STATE(225)] = 6544, + [SMALL_STATE(226)] = 6563, + [SMALL_STATE(227)] = 6578, + [SMALL_STATE(228)] = 6593, + [SMALL_STATE(229)] = 6612, + [SMALL_STATE(230)] = 6631, + [SMALL_STATE(231)] = 6648, + [SMALL_STATE(232)] = 6667, + [SMALL_STATE(233)] = 6686, + [SMALL_STATE(234)] = 6703, + [SMALL_STATE(235)] = 6718, + [SMALL_STATE(236)] = 6737, + [SMALL_STATE(237)] = 6756, + [SMALL_STATE(238)] = 6771, + [SMALL_STATE(239)] = 6788, + [SMALL_STATE(240)] = 6803, + [SMALL_STATE(241)] = 6822, + [SMALL_STATE(242)] = 6841, + [SMALL_STATE(243)] = 6856, + [SMALL_STATE(244)] = 6873, + [SMALL_STATE(245)] = 6892, + [SMALL_STATE(246)] = 6911, + [SMALL_STATE(247)] = 6930, + [SMALL_STATE(248)] = 6949, + [SMALL_STATE(249)] = 6968, + [SMALL_STATE(250)] = 6987, + [SMALL_STATE(251)] = 7006, + [SMALL_STATE(252)] = 7021, + [SMALL_STATE(253)] = 7036, + [SMALL_STATE(254)] = 7055, + [SMALL_STATE(255)] = 7070, + [SMALL_STATE(256)] = 7089, + [SMALL_STATE(257)] = 7106, + [SMALL_STATE(258)] = 7120, + [SMALL_STATE(259)] = 7134, + [SMALL_STATE(260)] = 7150, + [SMALL_STATE(261)] = 7166, + [SMALL_STATE(262)] = 7182, + [SMALL_STATE(263)] = 7198, + [SMALL_STATE(264)] = 7212, + [SMALL_STATE(265)] = 7228, + [SMALL_STATE(266)] = 7244, + [SMALL_STATE(267)] = 7260, + [SMALL_STATE(268)] = 7276, + [SMALL_STATE(269)] = 7292, + [SMALL_STATE(270)] = 7308, + [SMALL_STATE(271)] = 7324, + [SMALL_STATE(272)] = 7340, + [SMALL_STATE(273)] = 7356, + [SMALL_STATE(274)] = 7372, + [SMALL_STATE(275)] = 7388, + [SMALL_STATE(276)] = 7404, + [SMALL_STATE(277)] = 7418, + [SMALL_STATE(278)] = 7434, + [SMALL_STATE(279)] = 7450, + [SMALL_STATE(280)] = 7466, + [SMALL_STATE(281)] = 7482, + [SMALL_STATE(282)] = 7496, + [SMALL_STATE(283)] = 7512, + [SMALL_STATE(284)] = 7528, + [SMALL_STATE(285)] = 7542, + [SMALL_STATE(286)] = 7558, + [SMALL_STATE(287)] = 7574, + [SMALL_STATE(288)] = 7590, + [SMALL_STATE(289)] = 7606, + [SMALL_STATE(290)] = 7622, + [SMALL_STATE(291)] = 7638, + [SMALL_STATE(292)] = 7654, + [SMALL_STATE(293)] = 7670, + [SMALL_STATE(294)] = 7684, + [SMALL_STATE(295)] = 7700, + [SMALL_STATE(296)] = 7716, + [SMALL_STATE(297)] = 7732, + [SMALL_STATE(298)] = 7748, + [SMALL_STATE(299)] = 7764, + [SMALL_STATE(300)] = 7780, + [SMALL_STATE(301)] = 7794, + [SMALL_STATE(302)] = 7810, + [SMALL_STATE(303)] = 7824, + [SMALL_STATE(304)] = 7840, + [SMALL_STATE(305)] = 7856, + [SMALL_STATE(306)] = 7872, + [SMALL_STATE(307)] = 7886, + [SMALL_STATE(308)] = 7900, + [SMALL_STATE(309)] = 7916, + [SMALL_STATE(310)] = 7932, + [SMALL_STATE(311)] = 7946, + [SMALL_STATE(312)] = 7960, + [SMALL_STATE(313)] = 7976, + [SMALL_STATE(314)] = 7992, + [SMALL_STATE(315)] = 8006, + [SMALL_STATE(316)] = 8020, + [SMALL_STATE(317)] = 8036, + [SMALL_STATE(318)] = 8050, + [SMALL_STATE(319)] = 8066, + [SMALL_STATE(320)] = 8080, + [SMALL_STATE(321)] = 8096, + [SMALL_STATE(322)] = 8112, + [SMALL_STATE(323)] = 8128, + [SMALL_STATE(324)] = 8142, + [SMALL_STATE(325)] = 8158, + [SMALL_STATE(326)] = 8172, + [SMALL_STATE(327)] = 8185, + [SMALL_STATE(328)] = 8198, + [SMALL_STATE(329)] = 8211, + [SMALL_STATE(330)] = 8224, + [SMALL_STATE(331)] = 8237, + [SMALL_STATE(332)] = 8250, + [SMALL_STATE(333)] = 8263, + [SMALL_STATE(334)] = 8276, + [SMALL_STATE(335)] = 8289, + [SMALL_STATE(336)] = 8302, + [SMALL_STATE(337)] = 8315, + [SMALL_STATE(338)] = 8328, + [SMALL_STATE(339)] = 8341, + [SMALL_STATE(340)] = 8354, + [SMALL_STATE(341)] = 8367, + [SMALL_STATE(342)] = 8380, + [SMALL_STATE(343)] = 8393, + [SMALL_STATE(344)] = 8406, + [SMALL_STATE(345)] = 8419, + [SMALL_STATE(346)] = 8432, + [SMALL_STATE(347)] = 8445, + [SMALL_STATE(348)] = 8458, + [SMALL_STATE(349)] = 8471, + [SMALL_STATE(350)] = 8484, + [SMALL_STATE(351)] = 8497, + [SMALL_STATE(352)] = 8510, + [SMALL_STATE(353)] = 8523, + [SMALL_STATE(354)] = 8536, + [SMALL_STATE(355)] = 8549, + [SMALL_STATE(356)] = 8562, + [SMALL_STATE(357)] = 8575, + [SMALL_STATE(358)] = 8588, + [SMALL_STATE(359)] = 8601, + [SMALL_STATE(360)] = 8614, + [SMALL_STATE(361)] = 8627, + [SMALL_STATE(362)] = 8640, + [SMALL_STATE(363)] = 8653, + [SMALL_STATE(364)] = 8666, + [SMALL_STATE(365)] = 8679, + [SMALL_STATE(366)] = 8692, + [SMALL_STATE(367)] = 8705, + [SMALL_STATE(368)] = 8718, + [SMALL_STATE(369)] = 8731, + [SMALL_STATE(370)] = 8744, + [SMALL_STATE(371)] = 8757, + [SMALL_STATE(372)] = 8770, + [SMALL_STATE(373)] = 8783, + [SMALL_STATE(374)] = 8796, + [SMALL_STATE(375)] = 8809, + [SMALL_STATE(376)] = 8822, + [SMALL_STATE(377)] = 8835, + [SMALL_STATE(378)] = 8848, + [SMALL_STATE(379)] = 8861, + [SMALL_STATE(380)] = 8874, + [SMALL_STATE(381)] = 8887, + [SMALL_STATE(382)] = 8900, + [SMALL_STATE(383)] = 8913, + [SMALL_STATE(384)] = 8926, + [SMALL_STATE(385)] = 8939, + [SMALL_STATE(386)] = 8952, + [SMALL_STATE(387)] = 8965, + [SMALL_STATE(388)] = 8978, + [SMALL_STATE(389)] = 8991, + [SMALL_STATE(390)] = 9004, + [SMALL_STATE(391)] = 9017, + [SMALL_STATE(392)] = 9030, + [SMALL_STATE(393)] = 9043, + [SMALL_STATE(394)] = 9056, + [SMALL_STATE(395)] = 9069, + [SMALL_STATE(396)] = 9082, + [SMALL_STATE(397)] = 9095, + [SMALL_STATE(398)] = 9108, + [SMALL_STATE(399)] = 9121, + [SMALL_STATE(400)] = 9134, + [SMALL_STATE(401)] = 9147, + [SMALL_STATE(402)] = 9160, + [SMALL_STATE(403)] = 9173, + [SMALL_STATE(404)] = 9186, + [SMALL_STATE(405)] = 9199, + [SMALL_STATE(406)] = 9212, + [SMALL_STATE(407)] = 9225, + [SMALL_STATE(408)] = 9238, + [SMALL_STATE(409)] = 9251, + [SMALL_STATE(410)] = 9264, + [SMALL_STATE(411)] = 9277, + [SMALL_STATE(412)] = 9290, + [SMALL_STATE(413)] = 9303, + [SMALL_STATE(414)] = 9316, + [SMALL_STATE(415)] = 9329, + [SMALL_STATE(416)] = 9342, + [SMALL_STATE(417)] = 9355, + [SMALL_STATE(418)] = 9368, + [SMALL_STATE(419)] = 9381, + [SMALL_STATE(420)] = 9394, + [SMALL_STATE(421)] = 9407, + [SMALL_STATE(422)] = 9420, + [SMALL_STATE(423)] = 9433, + [SMALL_STATE(424)] = 9446, + [SMALL_STATE(425)] = 9459, + [SMALL_STATE(426)] = 9472, + [SMALL_STATE(427)] = 9485, + [SMALL_STATE(428)] = 9498, + [SMALL_STATE(429)] = 9511, + [SMALL_STATE(430)] = 9524, + [SMALL_STATE(431)] = 9537, + [SMALL_STATE(432)] = 9550, + [SMALL_STATE(433)] = 9563, + [SMALL_STATE(434)] = 9576, + [SMALL_STATE(435)] = 9589, + [SMALL_STATE(436)] = 9602, + [SMALL_STATE(437)] = 9615, + [SMALL_STATE(438)] = 9628, + [SMALL_STATE(439)] = 9641, + [SMALL_STATE(440)] = 9654, + [SMALL_STATE(441)] = 9667, + [SMALL_STATE(442)] = 9680, + [SMALL_STATE(443)] = 9693, + [SMALL_STATE(444)] = 9706, + [SMALL_STATE(445)] = 9719, + [SMALL_STATE(446)] = 9732, + [SMALL_STATE(447)] = 9745, + [SMALL_STATE(448)] = 9758, + [SMALL_STATE(449)] = 9771, + [SMALL_STATE(450)] = 9784, + [SMALL_STATE(451)] = 9797, + [SMALL_STATE(452)] = 9810, + [SMALL_STATE(453)] = 9823, + [SMALL_STATE(454)] = 9836, + [SMALL_STATE(455)] = 9849, + [SMALL_STATE(456)] = 9862, + [SMALL_STATE(457)] = 9875, + [SMALL_STATE(458)] = 9888, + [SMALL_STATE(459)] = 9901, + [SMALL_STATE(460)] = 9914, + [SMALL_STATE(461)] = 9927, + [SMALL_STATE(462)] = 9931, }; static const TSParseActionEntry ts_parse_actions[] = { [0] = {.entry = {.count = 0, .reusable = false}}, [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), - [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT(351), - [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(461), + [3] = {.entry = {.count = 1, .reusable = true}}, SHIFT(345), + [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(462), [7] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 0), [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(459), [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(458), [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(457), - [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(185), [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(455), [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(454), - [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(150), - [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), - [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(70), - [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(331), - [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(330), - [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(329), - [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(254), - [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(248), - [37] = {.entry = {.count = 1, .reusable = false}}, SHIFT(128), - [39] = {.entry = {.count = 1, .reusable = false}}, SHIFT(419), + [21] = {.entry = {.count = 1, .reusable = true}}, SHIFT(136), + [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(344), + [27] = {.entry = {.count = 1, .reusable = false}}, SHIFT(346), + [29] = {.entry = {.count = 1, .reusable = false}}, SHIFT(350), + [31] = {.entry = {.count = 1, .reusable = false}}, SHIFT(353), + [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(219), + [35] = {.entry = {.count = 1, .reusable = false}}, SHIFT(223), + [37] = {.entry = {.count = 1, .reusable = false}}, SHIFT(137), + [39] = {.entry = {.count = 1, .reusable = false}}, SHIFT(354), [41] = {.entry = {.count = 1, .reusable = true}}, SHIFT(423), - [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(327), - [45] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), - [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), - [49] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_seq_repeat1, 2), SHIFT_REPEAT(46), - [52] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_seq_repeat1, 2), - [54] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_seq_repeat1, 2), SHIFT_REPEAT(331), - [57] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_seq_repeat1, 2), SHIFT_REPEAT(330), - [60] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_seq_repeat1, 2), SHIFT_REPEAT(329), - [63] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_seq_repeat1, 2), SHIFT_REPEAT(254), - [66] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_seq_repeat1, 2), SHIFT_REPEAT(248), - [69] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_seq_repeat1, 2), SHIFT_REPEAT(128), - [72] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_seq_repeat1, 2), SHIFT_REPEAT(419), - [75] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_seq_repeat1, 2), SHIFT_REPEAT(423), - [78] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_seq_repeat1, 2), SHIFT_REPEAT(327), - [81] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), - [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), - [85] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), - [87] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), - [89] = {.entry = {.count = 1, .reusable = true}}, SHIFT(60), - [91] = {.entry = {.count = 1, .reusable = false}}, SHIFT(202), - [93] = {.entry = {.count = 1, .reusable = false}}, SHIFT(207), - [95] = {.entry = {.count = 1, .reusable = false}}, SHIFT(148), - [97] = {.entry = {.count = 1, .reusable = false}}, SHIFT(328), - [99] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), - [101] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_port, 3), - [103] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_port, 3), - [105] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 2), - [107] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_port, 1), - [109] = {.entry = {.count = 1, .reusable = true}}, SHIFT(368), - [111] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_port, 1), - [113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(371), - [115] = {.entry = {.count = 1, .reusable = true}}, SHIFT(320), - [117] = {.entry = {.count = 1, .reusable = false}}, SHIFT(337), - [119] = {.entry = {.count = 1, .reusable = false}}, SHIFT(336), - [121] = {.entry = {.count = 1, .reusable = true}}, SHIFT(408), - [123] = {.entry = {.count = 1, .reusable = false}}, SHIFT(23), - [125] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), - [127] = {.entry = {.count = 1, .reusable = false}}, SHIFT(399), - [129] = {.entry = {.count = 1, .reusable = false}}, SHIFT(400), - [131] = {.entry = {.count = 1, .reusable = false}}, SHIFT(402), - [133] = {.entry = {.count = 1, .reusable = false}}, SHIFT(205), - [135] = {.entry = {.count = 1, .reusable = false}}, SHIFT(206), - [137] = {.entry = {.count = 1, .reusable = false}}, SHIFT(126), - [139] = {.entry = {.count = 1, .reusable = false}}, SHIFT(384), - [141] = {.entry = {.count = 1, .reusable = false}}, SHIFT(403), - [143] = {.entry = {.count = 1, .reusable = false}}, SHIFT(255), - [145] = {.entry = {.count = 1, .reusable = false}}, SHIFT(222), - [147] = {.entry = {.count = 1, .reusable = false}}, SHIFT(136), - [149] = {.entry = {.count = 1, .reusable = false}}, SHIFT(452), - [151] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), - [153] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), SHIFT_REPEAT(457), - [156] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), SHIFT_REPEAT(188), - [159] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), SHIFT_REPEAT(455), - [162] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), SHIFT_REPEAT(454), - [165] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), SHIFT_REPEAT(150), - [168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_io_port_repeat1, 2), - [170] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_io_port_repeat1, 2), - [172] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_io_port_repeat1, 2), SHIFT_REPEAT(423), - [175] = {.entry = {.count = 1, .reusable = true}}, SHIFT(96), - [177] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), - [179] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [181] = {.entry = {.count = 1, .reusable = true}}, SHIFT(418), - [183] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_literal, 4), - [185] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_literal, 4), - [187] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 3), - [189] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 3), - [191] = {.entry = {.count = 1, .reusable = false}}, SHIFT(95), - [193] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_wires_inner_repeat1, 2), - [195] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_wires_inner_repeat1, 2), SHIFT_REPEAT(337), - [198] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_wires_inner_repeat1, 2), SHIFT_REPEAT(336), - [201] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_wires_inner_repeat1, 2), SHIFT_REPEAT(408), - [204] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_wires_inner_repeat1, 2), SHIFT_REPEAT(23), - [207] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 4), - [209] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 4), - [211] = {.entry = {.count = 1, .reusable = false}}, SHIFT(99), - [213] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 3), - [215] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 3), - [217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 5), - [219] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 5), - [221] = {.entry = {.count = 1, .reusable = false}}, SHIFT(98), - [223] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_hole, 4), - [225] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_hole, 4), - [227] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wires_inner, 1), - [229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_at_attribute, 2), - [231] = {.entry = {.count = 1, .reusable = true}}, SHIFT(444), - [233] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_at_attribute, 2), - [235] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_par, 5), - [237] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_par, 5), - [239] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_stmt, 4), - [241] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_stmt, 4), - [243] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_stmt, 4), - [245] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_stmt, 4), - [247] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt, 1), - [249] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt, 1), - [251] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_enable, 1), - [253] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_enable, 1), - [255] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr, 3), - [257] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr, 3), - [259] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cmp_expr, 3), - [261] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cmp_expr, 3), - [263] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), - [265] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), - [267] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke, 9), - [269] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_invoke, 9), - [271] = {.entry = {.count = 1, .reusable = true}}, SHIFT(91), - [273] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), - [275] = {.entry = {.count = 1, .reusable = false}}, SHIFT(89), - [277] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_stmt, 3), - [279] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_stmt, 3), - [281] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_enable, 2), - [283] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_enable, 2), - [285] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke, 5), - [287] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_invoke, 5), - [289] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 6), - [291] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 6), - [293] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_seq, 6), - [295] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_seq, 6), - [297] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_seq, 5), - [299] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_seq, 5), - [301] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_stmt, 3), - [303] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_stmt, 3), - [305] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke, 7), - [307] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_invoke, 7), - [309] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_enable, 3), - [311] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_enable, 3), - [313] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_stmt, 5), - [315] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_stmt, 5), - [317] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_base_expr, 1), - [319] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_base_expr, 1), - [321] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr, 1), - [323] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr, 1), - [325] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_par, 4), - [327] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_par, 4), - [329] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_par, 6), - [331] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_par, 6), - [333] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_par, 3), - [335] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_par, 3), - [337] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_seq, 4), - [339] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_seq, 4), - [341] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke, 8), - [343] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_invoke, 8), - [345] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 7), - [347] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 7), - [349] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_seq_repeat1, 1), - [351] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_seq_repeat1, 1), - [353] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_seq, 3), - [355] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_seq, 3), - [357] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke, 6), - [359] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_invoke, 6), - [361] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke, 10), - [363] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_invoke, 10), - [365] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_io_port_repeat1, 1), - [367] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_io_port_repeat1, 1), - [369] = {.entry = {.count = 1, .reusable = true}}, SHIFT(171), - [371] = {.entry = {.count = 1, .reusable = false}}, SHIFT(90), - [373] = {.entry = {.count = 1, .reusable = true}}, SHIFT(92), - [375] = {.entry = {.count = 1, .reusable = true}}, SHIFT(106), - [377] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_term, 1), - [379] = {.entry = {.count = 1, .reusable = true}}, SHIFT(243), - [381] = {.entry = {.count = 1, .reusable = true}}, SHIFT(244), - [383] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), - [385] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(459), - [388] = {.entry = {.count = 1, .reusable = true}}, SHIFT(154), - [390] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_at_attribute, 5), - [392] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_at_attribute, 5), - [394] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_group_repeat1, 2), - [396] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_group_repeat1, 2), SHIFT_REPEAT(408), - [399] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_group_repeat1, 2), SHIFT_REPEAT(23), - [402] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), - [404] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), - [406] = {.entry = {.count = 1, .reusable = true}}, SHIFT(202), - [408] = {.entry = {.count = 1, .reusable = true}}, SHIFT(426), - [410] = {.entry = {.count = 1, .reusable = true}}, SHIFT(160), - [412] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), - [414] = {.entry = {.count = 1, .reusable = true}}, SHIFT(254), - [416] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163), - [418] = {.entry = {.count = 1, .reusable = true}}, SHIFT(173), - [420] = {.entry = {.count = 1, .reusable = true}}, SHIFT(122), - [422] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive, 7), - [424] = {.entry = {.count = 1, .reusable = true}}, SHIFT(253), - [426] = {.entry = {.count = 1, .reusable = false}}, SHIFT(356), - [428] = {.entry = {.count = 1, .reusable = true}}, SHIFT(413), - [430] = {.entry = {.count = 1, .reusable = false}}, SHIFT(339), - [432] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive, 6), - [434] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive, 5), - [436] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import, 3), - [438] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive, 4), - [440] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_extern_repeat1, 2), - [442] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_extern_repeat1, 2), SHIFT_REPEAT(188), - [445] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_extern_repeat1, 2), SHIFT_REPEAT(455), - [448] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_extern_repeat1, 2), SHIFT_REPEAT(150), - [451] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 1), - [453] = {.entry = {.count = 1, .reusable = true}}, SHIFT(120), - [455] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive, 8), - [457] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern, 5), - [459] = {.entry = {.count = 1, .reusable = true}}, SHIFT(247), - [461] = {.entry = {.count = 1, .reusable = true}}, SHIFT(407), - [463] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern, 4), - [465] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_component, 8), - [467] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_term, 2), - [469] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_latency_annotation, 3), - [471] = {.entry = {.count = 1, .reusable = true}}, SHIFT(433), - [473] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_static_annotation, 1), - [475] = {.entry = {.count = 1, .reusable = true}}, SHIFT(438), - [477] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_term, 3), - [479] = {.entry = {.count = 1, .reusable = true}}, SHIFT(452), - [481] = {.entry = {.count = 1, .reusable = true}}, SHIFT(137), - [483] = {.entry = {.count = 1, .reusable = true}}, SHIFT(383), - [485] = {.entry = {.count = 1, .reusable = true}}, SHIFT(382), - [487] = {.entry = {.count = 1, .reusable = true}}, SHIFT(381), - [489] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_component, 9), - [491] = {.entry = {.count = 1, .reusable = true}}, SHIFT(121), - [493] = {.entry = {.count = 1, .reusable = true}}, SHIFT(275), - [495] = {.entry = {.count = 1, .reusable = true}}, SHIFT(178), - [497] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_static_annotation, 2), - [499] = {.entry = {.count = 1, .reusable = true}}, SHIFT(134), - [501] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_component, 6), - [503] = {.entry = {.count = 1, .reusable = true}}, SHIFT(234), - [505] = {.entry = {.count = 1, .reusable = true}}, SHIFT(456), - [507] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_component, 5), - [509] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_io_port_list_repeat1, 2), - [511] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_io_port_list_repeat1, 2), SHIFT_REPEAT(408), - [514] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_io_port_list_repeat1, 2), SHIFT_REPEAT(407), - [517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(144), - [519] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 1), - [521] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_cells_inner_repeat1, 2), - [523] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cells_inner_repeat1, 2), SHIFT_REPEAT(356), - [526] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_cells_inner_repeat1, 2), SHIFT_REPEAT(413), - [529] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cells_inner_repeat1, 2), SHIFT_REPEAT(339), - [532] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_component, 10), - [534] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_component, 7), - [536] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), - [538] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cells_inner, 1), - [540] = {.entry = {.count = 1, .reusable = true}}, SHIFT(384), - [542] = {.entry = {.count = 1, .reusable = true}}, SHIFT(255), - [544] = {.entry = {.count = 1, .reusable = true}}, SHIFT(205), - [546] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wire_assignment, 5), - [548] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_wire_assignment, 5), - [550] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_wires_inner_repeat1, 1), - [552] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_wires_inner_repeat1, 1), - [554] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arg_list, 3), - [556] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arg_list, 3), - [558] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_group, 5), - [560] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_group, 5), - [562] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_group, 6), - [564] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_group, 6), - [566] = {.entry = {.count = 1, .reusable = true}}, SHIFT(199), - [568] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cell_assignment, 5), - [570] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cell_assignment, 5), - [572] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_group, 4), - [574] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_group, 4), - [576] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arg_list, 2), - [578] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arg_list, 2), - [580] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_io_port_repeat1, 2), SHIFT_REPEAT(426), - [583] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), - [585] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cell_assignment, 4), - [587] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cell_assignment, 4), - [589] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123), - [591] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wire_assignment, 4), - [593] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_wire_assignment, 4), - [595] = {.entry = {.count = 1, .reusable = true}}, SHIFT(195), - [597] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cell_assignment, 3), - [599] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cell_assignment, 3), - [601] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_group, 7), - [603] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_group, 7), - [605] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_instantiation, 2), - [607] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_instantiation, 2), - [609] = {.entry = {.count = 1, .reusable = true}}, SHIFT(168), - [611] = {.entry = {.count = 1, .reusable = true}}, SHIFT(180), - [613] = {.entry = {.count = 1, .reusable = true}}, SHIFT(184), - [615] = {.entry = {.count = 1, .reusable = true}}, SHIFT(245), - [617] = {.entry = {.count = 1, .reusable = true}}, SHIFT(404), - [619] = {.entry = {.count = 1, .reusable = true}}, SHIFT(213), - [621] = {.entry = {.count = 1, .reusable = true}}, SHIFT(390), - [623] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_io_port_repeat1, 2), SHIFT_REPEAT(408), - [626] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_cells_inner_repeat1, 1), - [628] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_cells_inner_repeat1, 1), - [630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(388), - [632] = {.entry = {.count = 1, .reusable = true}}, SHIFT(386), - [634] = {.entry = {.count = 1, .reusable = true}}, SHIFT(399), - [636] = {.entry = {.count = 1, .reusable = true}}, SHIFT(400), - [638] = {.entry = {.count = 1, .reusable = true}}, SHIFT(402), - [640] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2), - [642] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2), SHIFT_REPEAT(404), - [645] = {.entry = {.count = 1, .reusable = true}}, SHIFT(393), - [647] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comb_or_static, 1), - [649] = {.entry = {.count = 1, .reusable = true}}, SHIFT(233), - [651] = {.entry = {.count = 1, .reusable = true}}, SHIFT(333), - [653] = {.entry = {.count = 1, .reusable = true}}, SHIFT(446), - [655] = {.entry = {.count = 1, .reusable = true}}, SHIFT(443), - [657] = {.entry = {.count = 1, .reusable = true}}, SHIFT(451), - [659] = {.entry = {.count = 1, .reusable = true}}, SHIFT(358), - [661] = {.entry = {.count = 1, .reusable = true}}, SHIFT(215), - [663] = {.entry = {.count = 1, .reusable = true}}, SHIFT(242), - [665] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_extern_repeat1, 1), - [667] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cell_assignment, 6), - [669] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cell_assignment, 6), - [671] = {.entry = {.count = 1, .reusable = true}}, SHIFT(325), - [673] = {.entry = {.count = 1, .reusable = true}}, SHIFT(311), - [675] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_arg_list_repeat1, 1), - [677] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), - [679] = {.entry = {.count = 1, .reusable = true}}, SHIFT(262), - [681] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cells, 4), - [683] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130), - [685] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_args, 2), - [687] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), - [689] = {.entry = {.count = 1, .reusable = true}}, SHIFT(201), - [691] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), - [693] = {.entry = {.count = 1, .reusable = true}}, SHIFT(239), - [695] = {.entry = {.count = 1, .reusable = true}}, SHIFT(103), - [697] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_args, 3), - [699] = {.entry = {.count = 1, .reusable = false}}, SHIFT(351), - [701] = {.entry = {.count = 1, .reusable = false}}, SHIFT(461), - [703] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_primitive_blob_repeat1, 2), - [705] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_primitive_blob_repeat1, 2), SHIFT_REPEAT(309), - [708] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_invoke_args_repeat1, 2), SHIFT_REPEAT(390), - [711] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_invoke_ref_args_repeat1, 2), SHIFT_REPEAT(386), - [714] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attributes, 4), - [716] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_io_port_list, 4), - [718] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), - [720] = {.entry = {.count = 1, .reusable = false}}, SHIFT(348), - [722] = {.entry = {.count = 1, .reusable = false}}, SHIFT(309), - [724] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_arg_list_repeat1, 2), - [726] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_arg_list_repeat1, 2), SHIFT_REPEAT(201), - [729] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_args, 4), - [731] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attributes, 3), - [733] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_io_port_list, 3), - [735] = {.entry = {.count = 1, .reusable = true}}, SHIFT(113), - [737] = {.entry = {.count = 1, .reusable = false}}, SHIFT(364), - [739] = {.entry = {.count = 1, .reusable = true}}, SHIFT(428), - [741] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_group_repeat1, 1), - [743] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attributes, 2), - [745] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_io_port_list, 2), - [747] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), - [749] = {.entry = {.count = 1, .reusable = true}}, SHIFT(164), - [751] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cells, 3), - [753] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_io_port, 3), - [755] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3), - [757] = {.entry = {.count = 1, .reusable = true}}, SHIFT(431), - [759] = {.entry = {.count = 1, .reusable = true}}, SHIFT(430), - [761] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comb_or_static, 2), - [763] = {.entry = {.count = 1, .reusable = true}}, SHIFT(278), - [765] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), - [767] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [769] = {.entry = {.count = 1, .reusable = true}}, SHIFT(282), - [771] = {.entry = {.count = 1, .reusable = true}}, SHIFT(235), - [773] = {.entry = {.count = 1, .reusable = true}}, SHIFT(252), - [775] = {.entry = {.count = 1, .reusable = true}}, SHIFT(290), - [777] = {.entry = {.count = 1, .reusable = true}}, SHIFT(369), - [779] = {.entry = {.count = 1, .reusable = true}}, SHIFT(367), - [781] = {.entry = {.count = 1, .reusable = true}}, SHIFT(305), - [783] = {.entry = {.count = 1, .reusable = true}}, SHIFT(256), - [785] = {.entry = {.count = 1, .reusable = true}}, SHIFT(226), - [787] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), - [789] = {.entry = {.count = 1, .reusable = true}}, SHIFT(392), - [791] = {.entry = {.count = 1, .reusable = true}}, SHIFT(342), - [793] = {.entry = {.count = 1, .reusable = true}}, SHIFT(219), - [795] = {.entry = {.count = 1, .reusable = true}}, SHIFT(225), - [797] = {.entry = {.count = 1, .reusable = true}}, SHIFT(346), - [799] = {.entry = {.count = 1, .reusable = true}}, SHIFT(347), - [801] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), - [803] = {.entry = {.count = 1, .reusable = true}}, SHIFT(350), - [805] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_port_with, 1), - [807] = {.entry = {.count = 1, .reusable = true}}, SHIFT(435), - [809] = {.entry = {.count = 1, .reusable = true}}, SHIFT(64), - [811] = {.entry = {.count = 1, .reusable = true}}, SHIFT(387), - [813] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_signature, 3), - [815] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_ref_arg, 3), - [817] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wires, 4), - [819] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_arg, 3), - [821] = {.entry = {.count = 1, .reusable = true}}, SHIFT(341), - [823] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), - [825] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_params_repeat1, 2), SHIFT_REPEAT(349), - [828] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_primitive_blob_repeat1, 1), - [830] = {.entry = {.count = 1, .reusable = true}}, SHIFT(101), - [832] = {.entry = {.count = 1, .reusable = true}}, SHIFT(317), - [834] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_io_port, 4), - [836] = {.entry = {.count = 1, .reusable = true}}, SHIFT(372), - [838] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wires, 3), - [840] = {.entry = {.count = 1, .reusable = false}}, SHIFT(365), - [842] = {.entry = {.count = 1, .reusable = false}}, SHIFT(363), - [844] = {.entry = {.count = 1, .reusable = true}}, SHIFT(231), - [846] = {.entry = {.count = 1, .reusable = true}}, SHIFT(77), - [848] = {.entry = {.count = 1, .reusable = true}}, SHIFT(375), - [850] = {.entry = {.count = 1, .reusable = true}}, SHIFT(343), - [852] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), - [854] = {.entry = {.count = 1, .reusable = true}}, SHIFT(289), - [856] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), - [858] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), - [860] = {.entry = {.count = 1, .reusable = true}}, SHIFT(183), - [862] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), - [864] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), - [866] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lhs, 1), - [868] = {.entry = {.count = 1, .reusable = true}}, SHIFT(302), - [870] = {.entry = {.count = 1, .reusable = true}}, SHIFT(203), - [872] = {.entry = {.count = 1, .reusable = true}}, SHIFT(366), - [874] = {.entry = {.count = 1, .reusable = true}}, SHIFT(209), - [876] = {.entry = {.count = 1, .reusable = true}}, SHIFT(310), - [878] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_switch, 3), - [880] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_params, 4), - [882] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_invoke_args_repeat1, 2), - [884] = {.entry = {.count = 1, .reusable = true}}, SHIFT(313), - [886] = {.entry = {.count = 1, .reusable = true}}, SHIFT(301), - [888] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_invoke_ref_args_repeat1, 2), - [890] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_ref_args, 3), - [892] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_blob, 3), - [894] = {.entry = {.count = 1, .reusable = true}}, SHIFT(376), - [896] = {.entry = {.count = 1, .reusable = false}}, SHIFT(441), - [898] = {.entry = {.count = 1, .reusable = true}}, SHIFT(363), - [900] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_control_inner, 1), - [902] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), - [904] = {.entry = {.count = 1, .reusable = true}}, SHIFT(139), - [906] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), - [908] = {.entry = {.count = 1, .reusable = true}}, SHIFT(279), - [910] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_blob, 2), - [912] = {.entry = {.count = 1, .reusable = true}}, SHIFT(406), - [914] = {.entry = {.count = 1, .reusable = true}}, SHIFT(218), - [916] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_params, 3), - [918] = {.entry = {.count = 1, .reusable = true}}, SHIFT(415), - [920] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_params_repeat1, 2), - [922] = {.entry = {.count = 1, .reusable = true}}, SHIFT(20), - [924] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_ref_args, 4), - [926] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), - [928] = {.entry = {.count = 1, .reusable = true}}, SHIFT(385), - [930] = {.entry = {.count = 1, .reusable = true}}, SHIFT(323), - [932] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_port_with, 3), - [934] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [936] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [938] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), - [940] = {.entry = {.count = 1, .reusable = true}}, SHIFT(267), - [942] = {.entry = {.count = 1, .reusable = true}}, SHIFT(345), - [944] = {.entry = {.count = 1, .reusable = true}}, SHIFT(391), - [946] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_ref_args, 2), - [948] = {.entry = {.count = 1, .reusable = true}}, SHIFT(257), - [950] = {.entry = {.count = 1, .reusable = true}}, SHIFT(175), - [952] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), - [954] = {.entry = {.count = 1, .reusable = true}}, SHIFT(326), - [956] = {.entry = {.count = 1, .reusable = true}}, SHIFT(316), - [958] = {.entry = {.count = 1, .reusable = true}}, SHIFT(395), - [960] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_control, 4), - [962] = {.entry = {.count = 1, .reusable = true}}, SHIFT(177), - [964] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), - [966] = {.entry = {.count = 1, .reusable = true}}, SHIFT(133), - [968] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [970] = {.entry = {.count = 1, .reusable = true}}, SHIFT(65), - [972] = {.entry = {.count = 1, .reusable = true}}, SHIFT(389), - [974] = {.entry = {.count = 1, .reusable = true}}, SHIFT(264), - [976] = {.entry = {.count = 1, .reusable = true}}, SHIFT(285), - [978] = {.entry = {.count = 1, .reusable = true}}, SHIFT(200), - [980] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 3), - [982] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), - [984] = {.entry = {.count = 1, .reusable = true}}, SHIFT(281), - [986] = {.entry = {.count = 1, .reusable = true}}, SHIFT(240), - [988] = {.entry = {.count = 1, .reusable = true}}, SHIFT(283), - [990] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), - [992] = {.entry = {.count = 1, .reusable = true}}, SHIFT(129), - [994] = {.entry = {.count = 1, .reusable = true}}, SHIFT(191), - [996] = {.entry = {.count = 1, .reusable = true}}, SHIFT(258), - [998] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), - [1000] = {.entry = {.count = 1, .reusable = true}}, SHIFT(152), - [1002] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), - [1004] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), - [1006] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), - [1008] = {.entry = {.count = 1, .reusable = true}}, SHIFT(193), - [1010] = {.entry = {.count = 1, .reusable = true}}, SHIFT(216), - [1012] = {.entry = {.count = 1, .reusable = true}}, SHIFT(414), - [1014] = {.entry = {.count = 1, .reusable = true}}, SHIFT(147), - [1016] = {.entry = {.count = 1, .reusable = true}}, SHIFT(166), - [1018] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_metadata, 2), - [1020] = {.entry = {.count = 1, .reusable = true}}, SHIFT(410), - [1022] = {.entry = {.count = 1, .reusable = true}}, SHIFT(380), - [1024] = {.entry = {.count = 1, .reusable = true}}, SHIFT(109), - [1026] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), - [1028] = {.entry = {.count = 1, .reusable = true}}, SHIFT(308), - [1030] = {.entry = {.count = 1, .reusable = true}}, SHIFT(114), - [1032] = {.entry = {.count = 1, .reusable = true}}, SHIFT(460), - [1034] = {.entry = {.count = 1, .reusable = true}}, SHIFT(179), - [1036] = {.entry = {.count = 1, .reusable = true}}, SHIFT(424), - [1038] = {.entry = {.count = 1, .reusable = true}}, SHIFT(427), - [1040] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), - [1042] = {.entry = {.count = 1, .reusable = true}}, SHIFT(432), - [1044] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [1046] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), - [1048] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), - [1050] = {.entry = {.count = 1, .reusable = true}}, SHIFT(269), - [1052] = {.entry = {.count = 1, .reusable = true}}, SHIFT(142), - [1054] = {.entry = {.count = 1, .reusable = true}}, SHIFT(436), - [1056] = {.entry = {.count = 1, .reusable = true}}, SHIFT(131), - [1058] = {.entry = {.count = 1, .reusable = true}}, SHIFT(261), - [1060] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), - [1062] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_metadata_ci, 1), - [1064] = {.entry = {.count = 1, .reusable = true}}, SHIFT(440), - [1066] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 3), - [1068] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 1), + [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(358), + [45] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_control_inner_repeat1, 2), SHIFT_REPEAT(57), + [48] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_control_inner_repeat1, 2), + [50] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_control_inner_repeat1, 2), SHIFT_REPEAT(346), + [53] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_control_inner_repeat1, 2), SHIFT_REPEAT(350), + [56] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_control_inner_repeat1, 2), SHIFT_REPEAT(353), + [59] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_control_inner_repeat1, 2), SHIFT_REPEAT(219), + [62] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_control_inner_repeat1, 2), SHIFT_REPEAT(223), + [65] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_control_inner_repeat1, 2), SHIFT_REPEAT(137), + [68] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_control_inner_repeat1, 2), SHIFT_REPEAT(354), + [71] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_control_inner_repeat1, 2), SHIFT_REPEAT(423), + [74] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_control_inner_repeat1, 2), SHIFT_REPEAT(358), + [77] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), + [79] = {.entry = {.count = 1, .reusable = true}}, SHIFT(69), + [81] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [83] = {.entry = {.count = 1, .reusable = true}}, SHIFT(42), + [85] = {.entry = {.count = 1, .reusable = true}}, SHIFT(76), + [87] = {.entry = {.count = 1, .reusable = true}}, SHIFT(78), + [89] = {.entry = {.count = 1, .reusable = true}}, SHIFT(68), + [91] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_control_inner, 1), + [93] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [95] = {.entry = {.count = 1, .reusable = false}}, SHIFT(255), + [97] = {.entry = {.count = 1, .reusable = false}}, SHIFT(250), + [99] = {.entry = {.count = 1, .reusable = false}}, SHIFT(129), + [101] = {.entry = {.count = 1, .reusable = false}}, SHIFT(460), + [103] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 1), + [105] = {.entry = {.count = 1, .reusable = true}}, SHIFT(325), + [107] = {.entry = {.count = 1, .reusable = false}}, SHIFT(327), + [109] = {.entry = {.count = 1, .reusable = false}}, SHIFT(326), + [111] = {.entry = {.count = 1, .reusable = false}}, SHIFT(136), + [113] = {.entry = {.count = 1, .reusable = true}}, SHIFT(408), + [115] = {.entry = {.count = 1, .reusable = false}}, SHIFT(26), + [117] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_port, 3), + [119] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_port, 3), + [121] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 2), + [123] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wires_inner, 1), + [125] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_port, 1), + [127] = {.entry = {.count = 1, .reusable = true}}, SHIFT(379), + [129] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_port, 1), + [131] = {.entry = {.count = 1, .reusable = true}}, SHIFT(380), + [133] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_wires_inner_repeat1, 2), + [135] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_wires_inner_repeat1, 2), SHIFT_REPEAT(327), + [138] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_wires_inner_repeat1, 2), SHIFT_REPEAT(326), + [141] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_wires_inner_repeat1, 2), SHIFT_REPEAT(136), + [144] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_wires_inner_repeat1, 2), SHIFT_REPEAT(408), + [147] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_wires_inner_repeat1, 2), SHIFT_REPEAT(26), + [150] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [152] = {.entry = {.count = 1, .reusable = false}}, SHIFT(400), + [154] = {.entry = {.count = 1, .reusable = false}}, SHIFT(401), + [156] = {.entry = {.count = 1, .reusable = false}}, SHIFT(403), + [158] = {.entry = {.count = 1, .reusable = false}}, SHIFT(210), + [160] = {.entry = {.count = 1, .reusable = false}}, SHIFT(211), + [162] = {.entry = {.count = 1, .reusable = false}}, SHIFT(149), + [164] = {.entry = {.count = 1, .reusable = false}}, SHIFT(396), + [166] = {.entry = {.count = 1, .reusable = false}}, SHIFT(404), + [168] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), + [170] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), SHIFT_REPEAT(457), + [173] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), SHIFT_REPEAT(185), + [176] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), SHIFT_REPEAT(455), + [179] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), SHIFT_REPEAT(454), + [182] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 2), SHIFT_REPEAT(136), + [185] = {.entry = {.count = 1, .reusable = false}}, SHIFT(249), + [187] = {.entry = {.count = 1, .reusable = false}}, SHIFT(240), + [189] = {.entry = {.count = 1, .reusable = false}}, SHIFT(145), + [191] = {.entry = {.count = 1, .reusable = false}}, SHIFT(452), + [193] = {.entry = {.count = 1, .reusable = true}}, SHIFT(90), + [195] = {.entry = {.count = 1, .reusable = true}}, SHIFT(89), + [197] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [199] = {.entry = {.count = 1, .reusable = true}}, SHIFT(416), + [201] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 4), + [203] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 4), + [205] = {.entry = {.count = 1, .reusable = false}}, SHIFT(106), + [207] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 3), + [209] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 3), + [211] = {.entry = {.count = 1, .reusable = false}}, SHIFT(109), + [213] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_literal, 4), + [215] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_literal, 4), + [217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_block, 3), + [219] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_block, 3), + [221] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 5), + [223] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 5), + [225] = {.entry = {.count = 1, .reusable = false}}, SHIFT(92), + [227] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_hole, 4), + [229] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_hole, 4), + [231] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_io_port_repeat1, 2), + [233] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_io_port_repeat1, 2), + [235] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_io_port_repeat1, 2), SHIFT_REPEAT(423), + [238] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_seq, 4), + [240] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_seq, 4), + [242] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr, 3), + [244] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr, 3), + [246] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_enable, 3), + [248] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_enable, 3), + [250] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_stmt, 3), + [252] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_stmt, 3), + [254] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_stmt, 3), + [256] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_stmt, 3), + [258] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_par, 3), + [260] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_par, 3), + [262] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_seq, 3), + [264] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_seq, 3), + [266] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_expr, 1), + [268] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_expr, 1), + [270] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_base_expr, 1), + [272] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_base_expr, 1), + [274] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_enable, 2), + [276] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_enable, 2), + [278] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_par, 4), + [280] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_par, 4), + [282] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_stmt, 4), + [284] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_stmt, 4), + [286] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_while_stmt, 4), + [288] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_while_stmt, 4), + [290] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_control_inner_repeat1, 1), + [292] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_control_inner_repeat1, 1), + [294] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_stmt, 1), + [296] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_stmt, 1), + [298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_enable, 1), + [300] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_enable, 1), + [302] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cmp_expr, 3), + [304] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cmp_expr, 3), + [306] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_at_attribute, 2), + [308] = {.entry = {.count = 1, .reusable = true}}, SHIFT(444), + [310] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_at_attribute, 2), + [312] = {.entry = {.count = 1, .reusable = true}}, SHIFT(94), + [314] = {.entry = {.count = 1, .reusable = true}}, SHIFT(95), + [316] = {.entry = {.count = 1, .reusable = true}}, SHIFT(88), + [318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(100), + [320] = {.entry = {.count = 1, .reusable = false}}, SHIFT(101), + [322] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke, 5), + [324] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_invoke, 5), + [326] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_seq, 5), + [328] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_seq, 5), + [330] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_par, 5), + [332] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_par, 5), + [334] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_repeat_stmt, 5), + [336] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_repeat_stmt, 5), + [338] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke, 6), + [340] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_invoke, 6), + [342] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke, 10), + [344] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_invoke, 10), + [346] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke, 9), + [348] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_invoke, 9), + [350] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke, 8), + [352] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_invoke, 8), + [354] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 6), + [356] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 6), + [358] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_seq, 6), + [360] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_seq, 6), + [362] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_if_stmt, 7), + [364] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_if_stmt, 7), + [366] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_par, 6), + [368] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_par, 6), + [370] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke, 7), + [372] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_invoke, 7), + [374] = {.entry = {.count = 1, .reusable = true}}, SHIFT(156), + [376] = {.entry = {.count = 1, .reusable = false}}, SHIFT(103), + [378] = {.entry = {.count = 1, .reusable = true}}, SHIFT(104), + [380] = {.entry = {.count = 1, .reusable = true}}, SHIFT(105), + [382] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_term, 1), + [384] = {.entry = {.count = 1, .reusable = true}}, SHIFT(218), + [386] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), + [388] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 2), SHIFT_REPEAT(459), + [391] = {.entry = {.count = 1, .reusable = true}}, SHIFT(214), + [393] = {.entry = {.count = 1, .reusable = true}}, SHIFT(151), + [395] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_at_attribute, 5), + [397] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_at_attribute, 5), + [399] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_io_port_repeat1, 1), + [401] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_io_port_repeat1, 1), + [403] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [405] = {.entry = {.count = 1, .reusable = true}}, SHIFT(255), + [407] = {.entry = {.count = 1, .reusable = true}}, SHIFT(426), + [409] = {.entry = {.count = 1, .reusable = true}}, SHIFT(152), + [411] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), + [413] = {.entry = {.count = 1, .reusable = true}}, SHIFT(219), + [415] = {.entry = {.count = 1, .reusable = true}}, SHIFT(157), + [417] = {.entry = {.count = 1, .reusable = true}}, SHIFT(158), + [419] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_group_repeat1, 2), + [421] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_group_repeat1, 2), SHIFT_REPEAT(408), + [424] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_group_repeat1, 2), SHIFT_REPEAT(26), + [427] = {.entry = {.count = 1, .reusable = true}}, SHIFT(159), + [429] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive, 8), + [431] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive, 7), + [433] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive, 5), + [435] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat1, 1), + [437] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_static_annotation, 2), + [439] = {.entry = {.count = 1, .reusable = true}}, SHIFT(135), + [441] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_extern_repeat1, 2), + [443] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_extern_repeat1, 2), SHIFT_REPEAT(185), + [446] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_extern_repeat1, 2), SHIFT_REPEAT(455), + [449] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_extern_repeat1, 2), SHIFT_REPEAT(136), + [452] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_latency_annotation, 3), + [454] = {.entry = {.count = 1, .reusable = true}}, SHIFT(220), + [456] = {.entry = {.count = 1, .reusable = false}}, SHIFT(332), + [458] = {.entry = {.count = 1, .reusable = true}}, SHIFT(414), + [460] = {.entry = {.count = 1, .reusable = false}}, SHIFT(331), + [462] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_import, 3), + [464] = {.entry = {.count = 1, .reusable = true}}, SHIFT(127), + [466] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive, 6), + [468] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive, 4), + [470] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_component, 10), + [472] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cells_inner, 1), + [474] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_component, 9), + [476] = {.entry = {.count = 1, .reusable = true}}, SHIFT(148), + [478] = {.entry = {.count = 1, .reusable = true}}, SHIFT(375), + [480] = {.entry = {.count = 1, .reusable = true}}, SHIFT(370), + [482] = {.entry = {.count = 1, .reusable = true}}, SHIFT(368), + [484] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern, 5), + [486] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_component, 7), + [488] = {.entry = {.count = 1, .reusable = true}}, SHIFT(433), + [490] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_static_annotation, 1), + [492] = {.entry = {.count = 1, .reusable = true}}, SHIFT(452), + [494] = {.entry = {.count = 1, .reusable = true}}, SHIFT(209), + [496] = {.entry = {.count = 1, .reusable = true}}, SHIFT(407), + [498] = {.entry = {.count = 1, .reusable = true}}, SHIFT(226), + [500] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_component, 6), + [502] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_cells_inner_repeat1, 2), + [504] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cells_inner_repeat1, 2), SHIFT_REPEAT(332), + [507] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_cells_inner_repeat1, 2), SHIFT_REPEAT(414), + [510] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_cells_inner_repeat1, 2), SHIFT_REPEAT(331), + [513] = {.entry = {.count = 1, .reusable = true}}, SHIFT(130), + [515] = {.entry = {.count = 1, .reusable = true}}, SHIFT(275), + [517] = {.entry = {.count = 1, .reusable = true}}, SHIFT(186), + [519] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_extern, 4), + [521] = {.entry = {.count = 1, .reusable = true}}, SHIFT(396), + [523] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), + [525] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_term, 2), + [527] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_file_repeat2, 1), + [529] = {.entry = {.count = 1, .reusable = true}}, SHIFT(128), + [531] = {.entry = {.count = 1, .reusable = true}}, SHIFT(132), + [533] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_term, 3), + [535] = {.entry = {.count = 1, .reusable = true}}, SHIFT(456), + [537] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_io_port_list_repeat1, 2), + [539] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_io_port_list_repeat1, 2), SHIFT_REPEAT(408), + [542] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_io_port_list_repeat1, 2), SHIFT_REPEAT(407), + [545] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_component, 8), + [547] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_component, 5), + [549] = {.entry = {.count = 1, .reusable = true}}, SHIFT(437), + [551] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wire_assignment, 5), + [553] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_wire_assignment, 5), + [555] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_group, 6), + [557] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_group, 6), + [559] = {.entry = {.count = 1, .reusable = true}}, SHIFT(210), + [561] = {.entry = {.count = 1, .reusable = true}}, SHIFT(249), + [563] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_wires_inner_repeat1, 1), + [565] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_wires_inner_repeat1, 1), + [567] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wire_assignment, 4), + [569] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_wire_assignment, 4), + [571] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_group, 4), + [573] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_group, 4), + [575] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_group, 5), + [577] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_group, 5), + [579] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_group, 7), + [581] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_group, 7), + [583] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arg_list, 3), + [585] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arg_list, 3), + [587] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_arg_list, 2), + [589] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_arg_list, 2), + [591] = {.entry = {.count = 1, .reusable = true}}, SHIFT(147), + [593] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_io_port_repeat1, 2), SHIFT_REPEAT(426), + [596] = {.entry = {.count = 1, .reusable = true}}, SHIFT(198), + [598] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cell_assignment, 5), + [600] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cell_assignment, 5), + [602] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_instantiation, 2), + [604] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_instantiation, 2), + [606] = {.entry = {.count = 1, .reusable = true}}, SHIFT(181), + [608] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cell_assignment, 3), + [610] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cell_assignment, 3), + [612] = {.entry = {.count = 1, .reusable = true}}, SHIFT(196), + [614] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cell_assignment, 4), + [616] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cell_assignment, 4), + [618] = {.entry = {.count = 1, .reusable = true}}, SHIFT(328), + [620] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_cells_inner_repeat1, 1), + [622] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_cells_inner_repeat1, 1), + [624] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_extern_repeat1, 1), + [626] = {.entry = {.count = 1, .reusable = true}}, SHIFT(400), + [628] = {.entry = {.count = 1, .reusable = true}}, SHIFT(401), + [630] = {.entry = {.count = 1, .reusable = true}}, SHIFT(403), + [632] = {.entry = {.count = 1, .reusable = true}}, SHIFT(188), + [634] = {.entry = {.count = 1, .reusable = true}}, SHIFT(187), + [636] = {.entry = {.count = 1, .reusable = true}}, SHIFT(438), + [638] = {.entry = {.count = 1, .reusable = true}}, SHIFT(451), + [640] = {.entry = {.count = 1, .reusable = true}}, SHIFT(361), + [642] = {.entry = {.count = 1, .reusable = true}}, SHIFT(244), + [644] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comb_or_static, 1), + [646] = {.entry = {.count = 1, .reusable = true}}, SHIFT(252), + [648] = {.entry = {.count = 1, .reusable = true}}, SHIFT(402), + [650] = {.entry = {.count = 1, .reusable = true}}, SHIFT(389), + [652] = {.entry = {.count = 1, .reusable = true}}, SHIFT(387), + [654] = {.entry = {.count = 1, .reusable = true}}, SHIFT(204), + [656] = {.entry = {.count = 1, .reusable = true}}, SHIFT(394), + [658] = {.entry = {.count = 1, .reusable = true}}, SHIFT(162), + [660] = {.entry = {.count = 1, .reusable = true}}, SHIFT(446), + [662] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_io_port_repeat1, 2), SHIFT_REPEAT(408), + [665] = {.entry = {.count = 1, .reusable = true}}, SHIFT(216), + [667] = {.entry = {.count = 1, .reusable = true}}, SHIFT(385), + [669] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2), + [671] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_attributes_repeat1, 2), SHIFT_REPEAT(402), + [674] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cell_assignment, 6), + [676] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_cell_assignment, 6), + [678] = {.entry = {.count = 1, .reusable = true}}, SHIFT(231), + [680] = {.entry = {.count = 1, .reusable = false}}, SHIFT(345), + [682] = {.entry = {.count = 1, .reusable = false}}, SHIFT(462), + [684] = {.entry = {.count = 1, .reusable = false}}, SHIFT(360), + [686] = {.entry = {.count = 1, .reusable = false}}, SHIFT(315), + [688] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_primitive_blob_repeat1, 2), + [690] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_primitive_blob_repeat1, 2), SHIFT_REPEAT(315), + [693] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_args, 2), + [695] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_arg_list_repeat1, 2), + [697] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_arg_list_repeat1, 2), SHIFT_REPEAT(206), + [700] = {.entry = {.count = 1, .reusable = true}}, SHIFT(314), + [702] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_arg_list_repeat1, 1), + [704] = {.entry = {.count = 1, .reusable = true}}, SHIFT(163), + [706] = {.entry = {.count = 1, .reusable = true}}, SHIFT(206), + [708] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_io_port_list, 2), + [710] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_args, 4), + [712] = {.entry = {.count = 1, .reusable = true}}, SHIFT(125), + [714] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attributes, 3), + [716] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cells, 3), + [718] = {.entry = {.count = 1, .reusable = true}}, SHIFT(107), + [720] = {.entry = {.count = 1, .reusable = true}}, SHIFT(112), + [722] = {.entry = {.count = 1, .reusable = true}}, SHIFT(201), + [724] = {.entry = {.count = 1, .reusable = true}}, SHIFT(111), + [726] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_io_port_list, 3), + [728] = {.entry = {.count = 1, .reusable = true}}, SHIFT(263), + [730] = {.entry = {.count = 1, .reusable = true}}, SHIFT(122), + [732] = {.entry = {.count = 1, .reusable = true}}, SHIFT(355), + [734] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_args, 3), + [736] = {.entry = {.count = 1, .reusable = true}}, SHIFT(93), + [738] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_group_repeat1, 1), + [740] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_invoke_args_repeat1, 2), SHIFT_REPEAT(394), + [743] = {.entry = {.count = 1, .reusable = false}}, SHIFT(338), + [745] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_cells, 4), + [747] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_invoke_ref_args_repeat1, 2), SHIFT_REPEAT(387), + [750] = {.entry = {.count = 1, .reusable = true}}, SHIFT(121), + [752] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attributes, 4), + [754] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attributes, 2), + [756] = {.entry = {.count = 1, .reusable = true}}, SHIFT(165), + [758] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_io_port_list, 4), + [760] = {.entry = {.count = 1, .reusable = true}}, SHIFT(428), + [762] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_io_port, 3), + [764] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_params_repeat1, 2), SHIFT_REPEAT(340), + [767] = {.entry = {.count = 1, .reusable = true}}, SHIFT(431), + [769] = {.entry = {.count = 1, .reusable = true}}, SHIFT(430), + [771] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comb_or_static, 2), + [773] = {.entry = {.count = 1, .reusable = true}}, SHIFT(278), + [775] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [777] = {.entry = {.count = 1, .reusable = true}}, SHIFT(288), + [779] = {.entry = {.count = 1, .reusable = true}}, SHIFT(99), + [781] = {.entry = {.count = 1, .reusable = true}}, SHIFT(253), + [783] = {.entry = {.count = 1, .reusable = true}}, SHIFT(227), + [785] = {.entry = {.count = 1, .reusable = true}}, SHIFT(108), + [787] = {.entry = {.count = 1, .reusable = true}}, SHIFT(87), + [789] = {.entry = {.count = 1, .reusable = true}}, SHIFT(300), + [791] = {.entry = {.count = 1, .reusable = true}}, SHIFT(365), + [793] = {.entry = {.count = 1, .reusable = true}}, SHIFT(364), + [795] = {.entry = {.count = 1, .reusable = true}}, SHIFT(312), + [797] = {.entry = {.count = 1, .reusable = true}}, SHIFT(337), + [799] = {.entry = {.count = 1, .reusable = true}}, SHIFT(234), + [801] = {.entry = {.count = 1, .reusable = true}}, SHIFT(74), + [803] = {.entry = {.count = 1, .reusable = true}}, SHIFT(393), + [805] = {.entry = {.count = 1, .reusable = true}}, SHIFT(257), + [807] = {.entry = {.count = 1, .reusable = true}}, SHIFT(342), + [809] = {.entry = {.count = 1, .reusable = true}}, SHIFT(343), + [811] = {.entry = {.count = 1, .reusable = true}}, SHIFT(66), + [813] = {.entry = {.count = 1, .reusable = true}}, SHIFT(348), + [815] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_port_with, 1), + [817] = {.entry = {.count = 1, .reusable = true}}, SHIFT(434), + [819] = {.entry = {.count = 1, .reusable = true}}, SHIFT(254), + [821] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wires, 4), + [823] = {.entry = {.count = 1, .reusable = true}}, SHIFT(251), + [825] = {.entry = {.count = 1, .reusable = true}}, SHIFT(79), + [827] = {.entry = {.count = 1, .reusable = true}}, SHIFT(388), + [829] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_ref_arg, 3), + [831] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_arg, 3), + [833] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_signature, 3), + [835] = {.entry = {.count = 1, .reusable = true}}, SHIFT(335), + [837] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_primitive_blob_repeat1, 1), + [839] = {.entry = {.count = 1, .reusable = true}}, SHIFT(323), + [841] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_attribute, 3), + [843] = {.entry = {.count = 1, .reusable = true}}, SHIFT(71), + [845] = {.entry = {.count = 1, .reusable = true}}, SHIFT(376), + [847] = {.entry = {.count = 1, .reusable = true}}, SHIFT(373), + [849] = {.entry = {.count = 1, .reusable = true}}, SHIFT(213), + [851] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_io_port, 4), + [853] = {.entry = {.count = 1, .reusable = false}}, SHIFT(369), + [855] = {.entry = {.count = 1, .reusable = false}}, SHIFT(366), + [857] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_wires, 3), + [859] = {.entry = {.count = 1, .reusable = true}}, SHIFT(236), + [861] = {.entry = {.count = 1, .reusable = true}}, SHIFT(372), + [863] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), + [865] = {.entry = {.count = 1, .reusable = true}}, SHIFT(302), + [867] = {.entry = {.count = 1, .reusable = true}}, SHIFT(242), + [869] = {.entry = {.count = 1, .reusable = true}}, SHIFT(308), + [871] = {.entry = {.count = 1, .reusable = true}}, SHIFT(366), + [873] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_lhs, 1), + [875] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_switch, 3), + [877] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_params, 4), + [879] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_invoke_args_repeat1, 2), + [881] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_blob, 3), + [883] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [885] = {.entry = {.count = 1, .reusable = true}}, SHIFT(306), + [887] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_invoke_ref_args_repeat1, 2), + [889] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_ref_args, 3), + [891] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_control, 3), + [893] = {.entry = {.count = 1, .reusable = false}}, SHIFT(441), + [895] = {.entry = {.count = 1, .reusable = true}}, SHIFT(193), + [897] = {.entry = {.count = 1, .reusable = true}}, SHIFT(377), + [899] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [901] = {.entry = {.count = 1, .reusable = true}}, SHIFT(4), + [903] = {.entry = {.count = 1, .reusable = true}}, SHIFT(286), + [905] = {.entry = {.count = 1, .reusable = true}}, SHIFT(453), + [907] = {.entry = {.count = 1, .reusable = true}}, SHIFT(141), + [909] = {.entry = {.count = 1, .reusable = true}}, SHIFT(399), + [911] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_primitive_blob, 2), + [913] = {.entry = {.count = 1, .reusable = true}}, SHIFT(5), + [915] = {.entry = {.count = 1, .reusable = true}}, SHIFT(110), + [917] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_params, 3), + [919] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_params_repeat1, 2), + [921] = {.entry = {.count = 1, .reusable = true}}, SHIFT(279), + [923] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), + [925] = {.entry = {.count = 1, .reusable = true}}, SHIFT(406), + [927] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), + [929] = {.entry = {.count = 1, .reusable = true}}, SHIFT(221), + [931] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_ref_args, 4), + [933] = {.entry = {.count = 1, .reusable = true}}, SHIFT(118), + [935] = {.entry = {.count = 1, .reusable = true}}, SHIFT(386), + [937] = {.entry = {.count = 1, .reusable = true}}, SHIFT(412), + [939] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [941] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [943] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_port_with, 3), + [945] = {.entry = {.count = 1, .reusable = true}}, SHIFT(319), + [947] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), + [949] = {.entry = {.count = 1, .reusable = true}}, SHIFT(317), + [951] = {.entry = {.count = 1, .reusable = true}}, SHIFT(341), + [953] = {.entry = {.count = 1, .reusable = true}}, SHIFT(392), + [955] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_invoke_ref_args, 2), + [957] = {.entry = {.count = 1, .reusable = true}}, SHIFT(73), + [959] = {.entry = {.count = 1, .reusable = true}}, SHIFT(395), + [961] = {.entry = {.count = 1, .reusable = true}}, SHIFT(190), + [963] = {.entry = {.count = 1, .reusable = true}}, SHIFT(72), + [965] = {.entry = {.count = 1, .reusable = true}}, SHIFT(267), + [967] = {.entry = {.count = 1, .reusable = true}}, SHIFT(142), + [969] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_control, 4), + [971] = {.entry = {.count = 1, .reusable = true}}, SHIFT(180), + [973] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [975] = {.entry = {.count = 1, .reusable = true}}, SHIFT(383), + [977] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), + [979] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), + [981] = {.entry = {.count = 1, .reusable = true}}, SHIFT(266), + [983] = {.entry = {.count = 1, .reusable = true}}, SHIFT(293), + [985] = {.entry = {.count = 1, .reusable = true}}, SHIFT(233), + [987] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source_file, 3), + [989] = {.entry = {.count = 1, .reusable = true}}, SHIFT(117), + [991] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), + [993] = {.entry = {.count = 1, .reusable = true}}, SHIFT(287), + [995] = {.entry = {.count = 1, .reusable = true}}, SHIFT(256), + [997] = {.entry = {.count = 1, .reusable = true}}, SHIFT(284), + [999] = {.entry = {.count = 1, .reusable = true}}, SHIFT(176), + [1001] = {.entry = {.count = 1, .reusable = true}}, SHIFT(126), + [1003] = {.entry = {.count = 1, .reusable = true}}, SHIFT(160), + [1005] = {.entry = {.count = 1, .reusable = true}}, SHIFT(62), + [1007] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), + [1009] = {.entry = {.count = 1, .reusable = true}}, SHIFT(85), + [1011] = {.entry = {.count = 1, .reusable = true}}, SHIFT(276), + [1013] = {.entry = {.count = 1, .reusable = true}}, SHIFT(191), + [1015] = {.entry = {.count = 1, .reusable = true}}, SHIFT(239), + [1017] = {.entry = {.count = 1, .reusable = true}}, SHIFT(415), + [1019] = {.entry = {.count = 1, .reusable = true}}, SHIFT(150), + [1021] = {.entry = {.count = 1, .reusable = true}}, SHIFT(161), + [1023] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_metadata, 2), + [1025] = {.entry = {.count = 1, .reusable = true}}, SHIFT(410), + [1027] = {.entry = {.count = 1, .reusable = true}}, SHIFT(382), + [1029] = {.entry = {.count = 1, .reusable = true}}, SHIFT(97), + [1031] = {.entry = {.count = 1, .reusable = true}}, SHIFT(115), + [1033] = {.entry = {.count = 1, .reusable = true}}, SHIFT(309), + [1035] = {.entry = {.count = 1, .reusable = true}}, SHIFT(184), + [1037] = {.entry = {.count = 1, .reusable = true}}, SHIFT(119), + [1039] = {.entry = {.count = 1, .reusable = true}}, SHIFT(461), + [1041] = {.entry = {.count = 1, .reusable = true}}, SHIFT(123), + [1043] = {.entry = {.count = 1, .reusable = true}}, SHIFT(424), + [1045] = {.entry = {.count = 1, .reusable = true}}, SHIFT(427), + [1047] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [1049] = {.entry = {.count = 1, .reusable = true}}, SHIFT(432), + [1051] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [1053] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [1055] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), + [1057] = {.entry = {.count = 1, .reusable = true}}, SHIFT(269), + [1059] = {.entry = {.count = 1, .reusable = true}}, SHIFT(311), + [1061] = {.entry = {.count = 1, .reusable = true}}, SHIFT(436), + [1063] = {.entry = {.count = 1, .reusable = true}}, SHIFT(134), + [1065] = {.entry = {.count = 1, .reusable = true}}, SHIFT(262), + [1067] = {.entry = {.count = 1, .reusable = true}}, SHIFT(172), + [1069] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_metadata_ci, 1), + [1071] = {.entry = {.count = 1, .reusable = true}}, SHIFT(440), + [1073] = {.entry = {.count = 1, .reusable = true}}, SHIFT(259), + [1075] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 3), + [1077] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_comment, 1), }; #ifdef __cplusplus diff --git a/calyx-opt/src/default_passes.rs b/calyx-opt/src/default_passes.rs index 80ae33b743..314e06fdfc 100644 --- a/calyx-opt/src/default_passes.rs +++ b/calyx-opt/src/default_passes.rs @@ -1,4 +1,5 @@ //! Defines the default passes available to [PassManager]. +use crate::pass_manager::PassResult; use crate::passes::{ AddGuard, Canonicalize, CellShare, ClkInsertion, CollapseControl, CombProp, CompileInvoke, CompileRepeat, CompileStatic, CompileSync, @@ -13,16 +14,15 @@ use crate::passes::{ }; use crate::traversal::Named; use crate::{pass_manager::PassManager, register_alias}; -use calyx_utils::CalyxResult; impl PassManager { - pub fn default_passes() -> CalyxResult { + pub fn default_passes() -> PassResult { // Construct the pass manager and register all passes. let mut pm = PassManager::default(); // Validation passes - pm.register_pass::()?; - pm.register_pass::()?; + pm.register_diagnostic::()?; + pm.register_diagnostic::()?; pm.register_pass::()?; // Optimization passes @@ -62,7 +62,7 @@ impl PassManager { pm.register_pass::()?; // Enabled in the synthesis compilation flow - pm.register_pass::()?; + pm.register_diagnostic::()?; pm.register_pass::()?; // Disabled by default diff --git a/calyx-opt/src/pass_manager.rs b/calyx-opt/src/pass_manager.rs index 709d38ee5b..f515970dc2 100644 --- a/calyx-opt/src/pass_manager.rs +++ b/calyx-opt/src/pass_manager.rs @@ -2,13 +2,15 @@ //! passes. use crate::traversal; use calyx_ir as ir; -use calyx_utils::{CalyxResult, Error}; +use calyx_utils::{Error, MultiError}; use std::collections::{HashMap, HashSet}; use std::fmt::Write as _; use std::time::Instant; +pub type PassResult = std::result::Result; + /// Top-level type for all passes that transform an [ir::Context] -pub type PassClosure = Box CalyxResult<()>>; +pub type PassClosure = Box PassResult<()>>; /// Structure that tracks all registered passes for the compiler. #[derive(Default)] @@ -30,7 +32,48 @@ impl PassManager { /// let pm = PassManager::default(); /// pm.register_pass::()?; /// ``` - pub fn register_pass(&mut self) -> CalyxResult<()> + pub fn register_pass(&mut self) -> PassResult<()> + where + Pass: + traversal::Visitor + traversal::ConstructVisitor + traversal::Named, + { + self.register_generic_pass::(Box::new(|ir| { + Pass::do_pass_default(ir)?; + Ok(()) + })) + } + + /// Registers a diagnostic pass as a normal pass. If there is an error, + /// this will report the first error gathered by the pass. + pub fn register_diagnostic(&mut self) -> PassResult<()> + where + Pass: traversal::Visitor + + traversal::ConstructVisitor + + traversal::Named + + traversal::DiagnosticPass, + { + self.register_generic_pass::(Box::new(|ir| { + let mut visitor = Pass::from(ir)?; + visitor.do_pass(ir)?; + + let errors: Vec<_> = + visitor.diagnostics().errors_iter().cloned().collect(); + if !errors.is_empty() { + Err(MultiError::from(errors)) + } else { + // only show warnings, if there are no errors + visitor.diagnostics().warning_iter().for_each( + |warning| log::warn!(target: Pass::name(), "{warning:?}"), + ); + Ok(()) + } + })) + } + + fn register_generic_pass( + &mut self, + pass_closure: PassClosure, + ) -> PassResult<()> where Pass: traversal::Visitor + traversal::ConstructVisitor + traversal::Named, @@ -40,12 +83,9 @@ impl PassManager { return Err(Error::misc(format!( "Pass with name '{}' is already registered.", name - ))); + )) + .into()); } - let pass_closure: PassClosure = Box::new(|ir| { - Pass::do_pass_default(ir)?; - Ok(()) - }); self.passes.insert(name.clone(), pass_closure); let mut help = format!("- {}: {}", name, Pass::description()); for opt in Pass::opts() { @@ -69,12 +109,13 @@ impl PassManager { &mut self, name: String, passes: Vec, - ) -> CalyxResult<()> { + ) -> PassResult<()> { if self.aliases.contains_key(&name) { return Err(Error::misc(format!( "Alias with name '{}' already registered.", name - ))); + )) + .into()); } // Expand any aliases used in defining this alias. let all_passes = passes @@ -151,7 +192,7 @@ impl PassManager { incls: &[String], excls: &[String], insns: &[String], - ) -> CalyxResult<(Vec, HashSet)> { + ) -> PassResult<(Vec, HashSet)> { let mut insertions = insns .iter() .filter_map(|str| match str.split_once(':') { @@ -228,7 +269,7 @@ impl PassManager { excl: &[String], insn: &[String], dump_ir: bool, - ) -> CalyxResult<()> { + ) -> PassResult<()> { let (passes, excl_set) = self.create_plan(incl, excl, insn)?; for name in passes { diff --git a/calyx-opt/src/passes/papercut.rs b/calyx-opt/src/passes/papercut.rs index 72b26dd947..7d50059ca5 100644 --- a/calyx-opt/src/passes/papercut.rs +++ b/calyx-opt/src/passes/papercut.rs @@ -1,7 +1,10 @@ use crate::analysis::{self, AssignmentAnalysis}; -use crate::traversal::{Action, ConstructVisitor, Named, VisResult, Visitor}; +use crate::traversal::{ + Action, ConstructVisitor, DiagnosticContext, DiagnosticPass, Named, + VisResult, Visitor, +}; use calyx_ir::{self as ir, LibrarySignatures}; -use calyx_utils::{CalyxResult, Error}; +use calyx_utils::{CalyxResult, Error, WithPos}; use itertools::Itertools; use std::collections::{HashMap, HashSet}; @@ -11,6 +14,7 @@ type ReadTogether = (ir::Id, HashSet); /// Pass to check for common errors such as missing assignments to `done` holes /// of groups. +#[derive(Debug)] pub struct Papercut { /// Map from (primitive name) -> Vec<(set of ports)> /// When any of the ports in a set is driven, all ports in that set must @@ -26,6 +30,9 @@ pub struct Papercut { /// The cells that are driven through continuous assignments cont_cells: HashSet, + + /// diagnostic context to accumulate multiple errors + diag: DiagnosticContext, } impl Papercut { @@ -62,6 +69,7 @@ impl ConstructVisitor for Papercut { write_together, read_together, cont_cells: HashSet::new(), + diag: DiagnosticContext::default(), }) } @@ -96,6 +104,12 @@ fn port_information( None } +impl DiagnosticPass for Papercut { + fn diagnostics(&self) -> &DiagnosticContext { + &self.diag + } +} + impl Visitor for Papercut { fn start( &mut self, @@ -121,7 +135,7 @@ impl Visitor for Papercut { assign.name == p.borrow().name && !assign.is_hole() }); if done_use.is_none() { - return Err(Error::papercut(format!("Component `{}` has an empty control program and does not assign to the done port `{}`. Without an assignment to the done port, the component cannot return control flow.", comp.name, p.borrow().name))); + self.diag.err(Error::papercut(format!("Component `{}` has an empty control program and does not assign to the done port `{}`. Without an assignment to the done port, the component cannot return control flow.", comp.name, p.borrow().name)).with_pos(&comp.attributes)) } } } @@ -133,21 +147,18 @@ impl Visitor for Papercut { // driven. for group_ref in comp.get_groups().iter() { let group = group_ref.borrow(); - self.check_specs(&group.assignments) - .map_err(|err| err.with_pos(&group.attributes))?; + self.check_specs(&group.assignments, &group.attributes); } for group_ref in comp.get_static_groups().iter() { let group = group_ref.borrow(); - self.check_specs(&group.assignments) - .map_err(|err| err.with_pos(&group.attributes))?; + self.check_specs(&group.assignments, &group.attributes); } for cgr in comp.comb_groups.iter() { let cg = cgr.borrow(); - self.check_specs(&cg.assignments) - .map_err(|err| err.with_pos(&cg.attributes))?; + self.check_specs(&cg.assignments, &cg.attributes); } - // Compute all cells that are driven in by the continuous assignments0 + // Compute all cells that are driven in by the continuous assignments self.cont_cells = comp .continuous_assignments .iter() @@ -181,9 +192,8 @@ impl Visitor for Papercut { if *is_comb && !self.cont_cells.contains(&cell.name()) { let msg = format!("Port `{}.{}` is an output port on combinational primitive `{}` and will always output 0. Add a `with` statement to the `while` statement to ensure it has a valid value during execution.", cell.name(), port.name, prim_name); // Use dummy Id to get correct source location for error - return Err( - Error::papercut(msg).with_pos(&s.attributes) - ); + self.diag + .err(Error::papercut(msg).with_pos(&s.attributes)); } } } @@ -213,9 +223,8 @@ impl Visitor for Papercut { if *is_comb && !self.cont_cells.contains(&cell.name()) { let msg = format!("Port `{}.{}` is an output port on combinational primitive `{}` and will always output 0. Add a `with` statement to the `if` statement to ensure it has a valid value during execution.", cell.name(), port.name, prim_name); // Use dummy Id to get correct source location for error - return Err( - Error::papercut(msg).with_pos(&s.attributes) - ); + self.diag + .err(Error::papercut(msg).with_pos(&s.attributes)); } } } @@ -225,7 +234,10 @@ impl Visitor for Papercut { } impl Papercut { - fn check_specs(&mut self, assigns: &[ir::Assignment]) -> VisResult { + fn check_specs(&mut self, assigns: &[ir::Assignment], pos: &P) + where + P: WithPos, + { let all_writes = assigns .iter() .analysis() @@ -262,7 +274,7 @@ impl Papercut { read, missing, comp_type); - return Err(Error::papercut(msg)); + self.diag.err(Error::papercut(msg).with_pos(pos)); } } } @@ -297,11 +309,9 @@ impl Papercut { first, missing, comp_type); - return Err(Error::papercut(msg)); + self.diag.err(Error::papercut(msg).with_pos(pos)); } } } - // This return value is not used - Ok(Action::Continue) } } diff --git a/calyx-opt/src/passes/synthesis_papercut.rs b/calyx-opt/src/passes/synthesis_papercut.rs index d56e1a5e52..186ad25ccb 100644 --- a/calyx-opt/src/passes/synthesis_papercut.rs +++ b/calyx-opt/src/passes/synthesis_papercut.rs @@ -1,7 +1,10 @@ use crate::analysis::GraphAnalysis; -use crate::traversal::{Action, Named, VisResult, Visitor}; +use crate::traversal::{ + Action, ConstructVisitor, DiagnosticContext, DiagnosticPass, Named, + VisResult, Visitor, +}; use calyx_ir::{self as ir, LibrarySignatures}; -use calyx_utils::Error; +use calyx_utils::{CalyxResult, Error}; use std::collections::HashSet; const READ_PORT: &str = "read_data"; @@ -10,19 +13,41 @@ const WRITE_PORT: &str = "write_data"; /// Pass to check common synthesis issues. /// 1. If a memory is only read-from or written-to, synthesis tools will optimize it away. Add /// @external attribute to the cell definition to make it an interface memory. +#[derive(Debug)] pub struct SynthesisPapercut { /// Names of memory primitives memories: HashSet, + /// Diagnostic context for reporting multiple errors + diag: DiagnosticContext, } -impl Default for SynthesisPapercut { - fn default() -> Self { - let memories = - ["comb_mem_d1", "comb_mem_d2", "comb_mem_d3", "comb_mem_d4"] - .iter() - .map(|&mem| mem.into()) - .collect(); - SynthesisPapercut { memories } +// impl Default for SynthesisPapercut { +// fn default() -> Self { +// } +// } + +impl SynthesisPapercut { + fn default_memories() -> impl Iterator { + ["comb_mem_d1", "comb_mem_d2", "comb_mem_d3", "comb_mem_d4"] + .iter() + .map(|&mem| mem.into()) + } +} + +impl ConstructVisitor for SynthesisPapercut { + fn from(_ctx: &ir::Context) -> CalyxResult + where + Self: Sized, + { + let memories = Self::default_memories().collect(); + Ok(SynthesisPapercut { + memories, + diag: DiagnosticContext::default(), + }) + } + + fn clear_data(&mut self) { + self.memories = Self::default_memories().collect(); } } @@ -36,6 +61,12 @@ impl Named for SynthesisPapercut { } } +impl DiagnosticPass for SynthesisPapercut { + fn diagnostics(&self) -> &DiagnosticContext { + &self.diag + } +} + impl Visitor for SynthesisPapercut { fn start( &mut self, @@ -78,21 +109,23 @@ impl Visitor for SynthesisPapercut { let cell = comp.find_cell(mem).unwrap(); let read_port = cell.borrow().get(READ_PORT); if analysis.reads_from(&read_port.borrow()).next().is_none() { - return Err(Error::papercut( + self.diag.err(Error::papercut( format!( "Only writes performed on memory `{mem}'. Synthesis tools will remove this memory. Add @external to cell to turn this into an interface memory.", ), - )); + ).with_pos(&cell.borrow().attributes)); } let write_port = cell.borrow().get(WRITE_PORT); if analysis.writes_to(&write_port.borrow()).next().is_none() { - return Err(Error::papercut( + self.diag.err(Error::papercut( format!( "Only reads performed on memory `{mem}'. Synthesis tools will remove this memory. Add @external to cell to turn this into an interface memory.", ), - )); + ).with_pos(&cell.borrow().attributes)); } } + + // we don't need to traverse the rest of the component Ok(Action::Stop) } } diff --git a/calyx-opt/src/passes/well_formed.rs b/calyx-opt/src/passes/well_formed.rs index 6b05827f54..f3f14bcf77 100644 --- a/calyx-opt/src/passes/well_formed.rs +++ b/calyx-opt/src/passes/well_formed.rs @@ -1,4 +1,5 @@ use crate::traversal::{Action, ConstructVisitor, Named, VisResult, Visitor}; +use crate::traversal::{DiagnosticContext, DiagnosticPass, DiagnosticResult}; use calyx_ir::{ self as ir, Cell, CellType, Component, GetAttributes, LibrarySignatures, RESERVED_NAMES, @@ -84,6 +85,19 @@ pub struct WellFormed { ref_cells: HashMap>, /// Stack of currently active combinational groups active_comb: ActiveAssignments, + /// groups that have done holes + has_done_hole: HashSet, + /// Diagnostic context to accumulate multiple errors. + diag: DiagnosticContext, +} + +impl std::fmt::Debug for WellFormed { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("WellFormed") + .field("has_done_hole", &self.has_done_hole) + .field("diag", &self.diag) + .finish_non_exhaustive() + } } enum Invoke<'a> { @@ -182,6 +196,8 @@ impl ConstructVisitor for WellFormed { used_comb_groups: HashSet::new(), ref_cells, active_comb: ActiveAssignments::default(), + has_done_hole: HashSet::new(), + diag: DiagnosticContext::default(), }; Ok(w_f) @@ -203,6 +219,12 @@ impl Named for WellFormed { } } +impl DiagnosticPass for WellFormed { + fn diagnostics(&self) -> &DiagnosticContext { + &self.diag + } +} + /// Returns an error if the assignments are obviously conflicting. This happens when two /// assignments assign to the same port unconditionally. /// Because there are two types of assignments, we take in `assigns1` and `assigns2`. @@ -212,39 +234,28 @@ where I1: Iterator>, I2: Iterator>, { - let dsts1 = assigns1.filter(|a| a.guard.is_true()).map(|a| { - ( - a.dst.borrow().canonical(), - a.attributes - .copy_span() - .into_option() - .map(|s| s.show()) - .unwrap_or_else(|| ir::Printer::assignment_to_str(a)), - ) - }); - let dsts2 = assigns2.filter(|a| a.guard.is_true()).map(|a| { - ( - a.dst.borrow().canonical(), - a.attributes - .copy_span() - .into_option() - .map(|s| s.show()) - .unwrap_or_else(|| ir::Printer::assignment_to_str(a)), - ) - }); + let dsts1 = assigns1 + .filter(|a| a.guard.is_true()) + .map(|a| (a.dst.borrow().canonical(), a.attributes.copy_span())); + let dsts2 = assigns2 + .filter(|a| a.guard.is_true()) + .map(|a| (a.dst.borrow().canonical(), a.attributes.copy_span())); let dsts = dsts1.chain(dsts2); let dst_grps = dsts .sorted_by(|(dst1, _), (dst2, _)| ir::Canonical::cmp(dst1, dst2)) .group_by(|(dst, _)| dst.clone()); for (_, group) in &dst_grps { - let assigns = group.map(|(_, a)| a).collect_vec(); + let assigns = group.collect_vec(); if assigns.len() > 1 { - let msg = assigns.into_iter().join(""); - return Err(Error::malformed_structure(format!( - "Obviously conflicting assignments found:\n{}", - msg - ))); + let mut asgn_iter = assigns.into_iter().rev(); + return Err(Error::malformed_structure( + "Obviously conflicting assignments found", + ) + .with_pos(&asgn_iter.next().unwrap().1) + .with_annotations(asgn_iter.map(|(cannon, pos)| { + (pos, format!("`{cannon}` is also written to here")) + }))); } } Ok(()) @@ -282,16 +293,20 @@ impl Visitor for WellFormed { let cell = cell_ref.borrow(); // Check if any of the cells use a reserved name. if self.reserved_names.contains(&cell.name()) { - return Err(Error::reserved_name(cell.name()) - .with_pos(cell.get_attributes())); + self.diag.err( + Error::reserved_name(cell.name()) + .with_pos(cell.get_attributes()), + ); } // Check if a `ref` cell is invalid if cell.is_reference() { if cell.is_primitive(Some("std_const")) { - return Err(Error::malformed_structure( - "constant not allowed for ref cells".to_string(), - ) - .with_pos(cell.get_attributes())); + self.diag.err( + Error::malformed_structure( + "constant not allowed for ref cells".to_string(), + ) + .with_pos(cell.get_attributes()), + ); } if matches!(cell.prototype, CellType::ThisComponent) { unreachable!( @@ -305,23 +320,23 @@ impl Visitor for WellFormed { // there are no group or comb group definitions, and the control program is empty if comp.is_comb { if !matches!(&*comp.control.borrow(), ir::Control::Empty(..)) { - return Err(Error::malformed_structure(format!("Component `{}` is marked combinational but has a non-empty control program", comp.name))); + self.diag.err(Error::malformed_structure(format!("Component `{}` is marked combinational but has a non-empty control program", comp.name))); } if !comp.get_groups().is_empty() { let group = comp.get_groups().iter().next().unwrap().borrow(); - return Err(Error::malformed_structure(format!("Component `{}` is marked combinational but contains a group `{}`", comp.name, group.name())).with_pos(&group.attributes)); + self.diag.err(Error::malformed_structure(format!("Component `{}` is marked combinational but contains a group `{}`", comp.name, group.name())).with_pos(&group.attributes)); } if !comp.get_static_groups().is_empty() { let group = comp.get_static_groups().iter().next().unwrap().borrow(); - return Err(Error::malformed_structure(format!("Component `{}` is marked combinational but contains a group `{}`", comp.name, group.name())).with_pos(&group.attributes)); + self.diag.err(Error::malformed_structure(format!("Component `{}` is marked combinational but contains a group `{}`", comp.name, group.name())).with_pos(&group.attributes)); } if !comp.comb_groups.is_empty() { let group = comp.comb_groups.iter().next().unwrap().borrow(); - return Err(Error::malformed_structure(format!("Component `{}` is marked combinational but contains a group `{}`", comp.name, group.name())).with_pos(&group.attributes)); + self.diag.err(Error::malformed_structure(format!("Component `{}` is marked combinational but contains a group `{}`", comp.name, group.name())).with_pos(&group.attributes)); } for cell_ref in comp.cells.iter() { @@ -340,7 +355,7 @@ impl Visitor for WellFormed { _ => false, }; if !is_comb { - return Err(Error::malformed_structure(format!("Component `{}` is marked combinational but contains non-combinational cell `{}`", comp.name, cell.name())).with_pos(&cell.attributes)); + self.diag.err(Error::malformed_structure(format!("Component `{}` is marked combinational but contains non-combinational cell `{}`", comp.name, cell.name())).with_pos(&cell.attributes)); } } } @@ -366,7 +381,7 @@ impl Visitor for WellFormed { }) { match &*comp.control.borrow() { ir::Control::Static(_) | ir::Control::Empty(_) => (), - _ => return Err(Error::malformed_structure( + _ => return self.diag.early_return_err(Error::malformed_structure( format!("component {} has dynamic control but has @interval annotations", comp.name), ) .with_pos(&comp.attributes)), @@ -381,10 +396,10 @@ impl Visitor for WellFormed { { Some(val) => val, None => { - return Err(Error::malformed_structure( + return self.diag.early_return_err(Error::malformed_structure( "@interval(n) attribute on all @go ports since there is static control", ) - .with_pos(&comp.attributes)) + .with_pos(&comp.attributes)); } }; // Checking go ports. @@ -396,18 +411,20 @@ impl Visitor for WellFormed { { Some(val) => val, None => { - return Err(Error::malformed_structure(format!( + self.diag.err(Error::malformed_structure(format!( "@go port expected @interval({reference_val}) attribute on all ports \ since the component has static control", )) - .with_pos(&comp.attributes)) + .with_pos(&comp.attributes)); + continue; } }; if go_port_val != reference_val { - return Err(Error::malformed_structure(format!( + self.diag.err(Error::malformed_structure(format!( "@go port expected @interval {reference_val}, got @interval {go_port_val}", )) .with_pos(&go_port.borrow().attributes)); + continue; } // Checking control latency match comp.control.borrow().get_latency() { @@ -416,7 +433,7 @@ impl Visitor for WellFormed { } Some(control_latency) => { if control_latency != reference_val { - return Err(Error::malformed_structure(format!( + self.diag.err(Error::malformed_structure(format!( "component {} expected @interval {reference_val}, got @interval {control_latency}", comp.name, )) .with_pos(&comp.attributes)); @@ -437,39 +454,50 @@ impl Visitor for WellFormed { for assign in &group.assignments { let dst = assign.dst.borrow(); if port_is_static_prim(&dst) { - return Err(Error::malformed_structure(format!( - "Static cell `{}` written to in non-static group", - dst.get_parent_name() - )) - .with_pos(&assign.attributes)); + self.diag.err( + Error::malformed_structure(format!( + "Static cell `{}` written to in non-static group", + dst.get_parent_name() + )) + .with_pos(&assign.attributes), + ); } if dst.is_hole() && dst.name == "done" { // Group has multiple done conditions if has_done { - return Err(Error::malformed_structure(format!( - "Group `{}` has multiple done conditions", - gname - )) - .with_pos(&assign.attributes)); + self.diag.err( + Error::malformed_structure(format!( + "Group `{}` has multiple done conditions", + gname + )) + .with_pos(&assign.attributes), + ); } else { has_done = true; } // Group uses another group's done condition if gname != dst.get_parent_name() { - return Err(Error::malformed_structure( - format!("Group `{}` refers to the done condition of another group (`{}`).", - gname, - dst.get_parent_name())).with_pos(&dst.attributes)); + self.diag.err(Error::malformed_structure( + format!( + "Group `{}` refers to the done condition of another group (`{}`)", + gname, + dst.get_parent_name(), + )).with_pos(&assign.attributes)); } } } - // Group does not have a done condition - if !has_done { - return Err(Error::malformed_structure(format!( - "No writes to the `done' hole for group `{gname}'", - )) - .with_pos(&group.attributes)); + // If group has done condition, record this fact, + // otherwise record an error + if has_done { + self.has_done_hole.insert(gname); + } else { + self.diag.err( + Error::malformed_structure(format!( + "No writes to the `done' hole for group `{gname}'", + )) + .with_pos(&group.attributes), + ); } } @@ -510,17 +538,20 @@ impl Visitor for WellFormed { obvious_conflicts( comp.continuous_assignments.iter(), std::iter::empty::<&ir::Assignment>(), - )?; + ) + .accumulate_err(&mut self.diag)?; // Check for obvious conflicting assignments between the continuous assignments and the groups for cgr in comp.comb_groups.iter() { for assign in &cgr.borrow().assignments { let dst = assign.dst.borrow(); if port_is_static_prim(&dst) { - return Err(Error::malformed_structure(format!( - "Static cell `{}` written to in non-static group", - dst.get_parent_name() - )) - .with_pos(&assign.attributes)); + self.diag.err( + Error::malformed_structure(format!( + "Static cell `{}` written to in non-static group", + dst.get_parent_name() + )) + .with_pos(&assign.attributes), + ); } } obvious_conflicts( @@ -529,7 +560,8 @@ impl Visitor for WellFormed { .iter() .chain(comp.continuous_assignments.iter()), std::iter::empty::<&ir::Assignment>(), - )?; + ) + .accumulate_err(&mut self.diag)?; } Ok(Action::Continue) @@ -554,13 +586,12 @@ impl Visitor for WellFormed { group.assignments.iter(), ) .map_err(|err| { - let msg = s - .attributes - .copy_span() - .into_option() - .map(|s| s.format("Assigments activated by group enable")); - err.with_post_msg(msg) - })?; + err.with_annotation( + &s.attributes, + "Assignments activated by group static enable, causing the conflict", + ) + }) + .accumulate_err(&mut self.diag)?; Ok(Action::Continue) } @@ -572,15 +603,22 @@ impl Visitor for WellFormed { _ctx: &LibrarySignatures, _comps: &[ir::Component], ) -> VisResult { - self.used_groups.insert(s.group.borrow().name()); - let group = s.group.borrow(); + let gname = group.name(); + self.used_groups.insert(gname); + + // if this group doesn't have a done hole, we can't run this analysis + // so we abort early + if !self.has_done_hole.contains(&gname) { + return Ok(Action::Continue); + } + let asgn = group.done_cond(); let const_done_assign = asgn.guard.is_true() && asgn.src.borrow().is_constant(1, 1); if const_done_assign { - return Err(Error::malformed_structure("Group with constant done condition is invalid. Use `comb group` instead to define a combinational group.").with_pos(&group.attributes)); + self.diag.err(Error::malformed_structure("Group with constant done condition is invalid. Use `comb group` instead to define a combinational group.").with_pos(&group.attributes)); } // A group with "static"=0 annotation @@ -590,7 +628,7 @@ impl Visitor for WellFormed { .map(|v| v == 0) .unwrap_or(false) { - return Err(Error::malformed_structure("Group with annotation \"promotable\"=0 is invalid. Use `comb group` instead to define a combinational group or if the group's done condition is not constant, provide the correct \"static\" annotation.").with_pos(&group.attributes)); + self.diag.err(Error::malformed_structure("Group with annotation \"promotable\"=0 is invalid. Use `comb group` instead to define a combinational group or if the group's done condition is not constant, provide the correct \"static\" annotation.").with_pos(&group.attributes)); } // Check if the group has obviously conflicting assignments with the continuous assignments and the active combinational groups @@ -603,13 +641,12 @@ impl Visitor for WellFormed { std::iter::empty::<&ir::Assignment>(), ) .map_err(|err| { - let msg = s - .attributes - .copy_span() - .into_option() - .map(|s| s.format("Assigments activated by group enable")); - err.with_post_msg(msg) - })?; + err.with_annotation( + &s.attributes, + "Assignments activated by group enable, causing the conflict", + ) + }) + .accumulate_err(&mut self.diag)?; Ok(Action::Continue) } @@ -665,20 +702,23 @@ impl Visitor for WellFormed { std::iter::empty::<&ir::Assignment>(), ) .map_err(|err| { - let msg = s.attributes.copy_span().format(format!( - "Assignments from `{}' are actived here", - cg.name() - )); - err.with_post_msg(Some(msg)) - })?; + err.with_annotation( + &s.attributes, + format!( + "Assignments from `{}' are activated here, causing the conflict", + cg.name() + ), + ) + }) + .accumulate_err(&mut self.diag)?; // Push the combinational group to the stack of active groups self.active_comb.push(assigns); } else if !s.port.borrow().has_attribute(ir::BoolAttr::Stable) { - let msg = s.attributes.copy_span().format(format!( - "If statement has no comb group and its condition port {} is unstable", - s.port.borrow().canonical() - )); - log::warn!("{msg}"); + let err = Error::misc(format!( + "If statement has no comb group and its condition port {} is unstable", + s.port.borrow().canonical() + )).with_pos(&s.attributes); + self.diag.warning(err); } Ok(Action::Continue) } @@ -691,11 +731,12 @@ impl Visitor for WellFormed { _comps: &[ir::Component], ) -> VisResult { if !s.port.borrow().has_attribute(ir::BoolAttr::Stable) { - let msg = s.attributes.copy_span().format(format!( + let err = Error::misc(format!( "static if statement's condition port {} is unstable", s.port.borrow().canonical() - )); - log::warn!("{msg}"); + )) + .with_pos(&s.attributes); + self.diag.warning(err); } Ok(Action::Continue) } @@ -733,19 +774,20 @@ impl Visitor for WellFormed { ) .map_err(|err| { let msg = s.attributes.copy_span().format(format!( - "Assignments from `{}' are actived here", + "Assignments from `{}' are activated here", cg.name() )); err.with_post_msg(Some(msg)) - })?; + }) + .accumulate_err(&mut self.diag)?; // Push the combinational group to the stack of active groups self.active_comb.push(assigns); } else if !s.port.borrow().has_attribute(ir::BoolAttr::Stable) { - let msg = s.attributes.copy_span().format(format!( - "While loop has no comb group and its condition port {} is unstable", - s.port.borrow().canonical() - )); - log::warn!("{msg}"); + let err = Error::misc(format!( + "While loop has no comb group and its condition port `{}` is unstable", + s.port.borrow().canonical() + )).with_pos(&s.attributes); + self.diag.warning(err); } Ok(Action::Continue) } @@ -809,15 +851,15 @@ impl Visitor for WellFormed { match comp.find_group(*group) { Some(gr) => { let gr = gr.borrow(); - return Err( - Error::unused(*group, "group").with_pos(&gr.attributes) + self.diag.err( + Error::unused(*group, "group").with_pos(&gr.attributes), ); } None => { let gr = comp.find_static_group(*group).unwrap(); let gr = gr.borrow(); - return Err( - Error::unused(*group, "group").with_pos(&gr.attributes) + self.diag.err( + Error::unused(*group, "group").with_pos(&gr.attributes), ); } } @@ -830,8 +872,10 @@ impl Visitor for WellFormed { { let cgr = comp.find_comb_group(*comb_group).unwrap(); let cgr = cgr.borrow(); - return Err(Error::unused(*comb_group, "combinational group") - .with_pos(&cgr.attributes)); + self.diag.err( + Error::unused(*comb_group, "combinational group") + .with_pos(&cgr.attributes), + ); } Ok(Action::Continue) } diff --git a/calyx-opt/src/traversal/diagnostics.rs b/calyx-opt/src/traversal/diagnostics.rs new file mode 100644 index 0000000000..da1ed505eb --- /dev/null +++ b/calyx-opt/src/traversal/diagnostics.rs @@ -0,0 +1,76 @@ +use calyx_utils::{CalyxResult, Error}; + +use super::{Action, VisResult}; + +/// A pass that implements reporting Diagnostics +pub trait DiagnosticPass { + /// Return an iterator of the diagnostics gathered by this pass. + fn diagnostics(&self) -> &DiagnosticContext; +} + +/// A type for accumulating multiple errors +#[derive(Default, Debug)] +pub struct DiagnosticContext { + errors: Vec, + warnings: Vec, +} + +impl DiagnosticContext { + /// Report an `error` + pub fn err(&mut self, error: Error) { + self.errors.push(error); + } + + /// Report a `warning` + pub fn warning(&mut self, warning: Error) { + self.warnings.push(warning) + } + + /// Accumulates `error` into the context, and returns `Ok(Action::Continue)`. + /// This is useful for when we need to raise an Error because we couldn't + /// construct some value that we needed to continue the computation. + pub fn early_return_err(&mut self, error: Error) -> VisResult { + self.err(error); + Ok(Action::Continue) + } + + pub fn warning_iter(&self) -> impl Iterator { + self.warnings.iter() + } + + pub fn errors_iter(&self) -> impl Iterator { + self.errors.iter() + } +} + +/// Accumuate the error in a [`Result`] type into the [`DiagnosticContext`]. +pub trait DiagnosticResult { + fn accumulate_err(self, diag: &mut DiagnosticContext) -> Self; +} + +impl DiagnosticResult for CalyxResult +where + T: Default, +{ + fn accumulate_err(self, diag: &mut DiagnosticContext) -> Self { + match self { + Ok(act) => Ok(act), + Err(err) => { + diag.err(err); + Ok(T::default()) + } + } + } +} + +impl DiagnosticResult for VisResult { + fn accumulate_err(self, diag: &mut DiagnosticContext) -> Self { + match self { + Ok(act) => Ok(act), + Err(err) => { + diag.err(err); + Ok(Action::Continue) + } + } + } +} diff --git a/calyx-opt/src/traversal/mod.rs b/calyx-opt/src/traversal/mod.rs index a7151897f2..1a1bb0c5bc 100644 --- a/calyx-opt/src/traversal/mod.rs +++ b/calyx-opt/src/traversal/mod.rs @@ -1,10 +1,12 @@ //! Helpers for traversing Control programs mod action; mod construct; +mod diagnostics; mod post_order; mod visitor; pub use action::{Action, VisResult}; pub use construct::{ConstructVisitor, Named, ParseVal, PassOpt}; +pub use diagnostics::{DiagnosticContext, DiagnosticPass, DiagnosticResult}; pub use post_order::{CompTraversal, Order}; pub use visitor::{Visitable, Visitor}; diff --git a/calyx-utils/src/errors.rs b/calyx-utils/src/errors.rs index dd2a2b49f5..b087d017aa 100644 --- a/calyx-utils/src/errors.rs +++ b/calyx-utils/src/errors.rs @@ -1,22 +1,40 @@ //! Errors generated by the compiler. +use itertools::Itertools; + use crate::{GPosIdx, Id, WithPos}; /// Convience wrapper to represent success or meaningul compiler error. pub type CalyxResult = std::result::Result; /// Errors generated by the compiler +#[derive(Clone)] pub struct Error { kind: Box, pos: GPosIdx, + annotations: Vec<(GPosIdx, String)>, post_msg: Option, } +/// A collection of errors generated by the compiler +pub struct MultiError { + errors: Vec, +} + +impl From> for MultiError { + fn from(errors: Vec) -> Self { + MultiError { errors } + } +} + impl std::fmt::Debug for Error { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { if self.pos == GPosIdx::UNKNOWN { write!(f, "{}", self.kind)? } else { - write!(f, "{}", self.pos.format(self.kind.to_string()))? + write!(f, "{}", self.pos.format(self.kind.to_string()))?; + for (other_pos, msg) in &self.annotations { + write!(f, "\n...\n{}", other_pos.format_raw(msg))?; + } } if let Some(post) = &self.post_msg { write!(f, "\n{}", post)?; @@ -25,12 +43,38 @@ impl std::fmt::Debug for Error { } } +impl std::fmt::Debug for MultiError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let errors = self.errors.iter().map(|e| format!("{e:?}")).join("\n\n"); + write!(f, "{errors}") + } +} + impl Error { pub fn with_pos(mut self, pos: &T) -> Self { self.pos = pos.copy_span(); self } + pub fn with_annotation( + mut self, + pos: &T, + msg: S, + ) -> Self { + self.annotations.push((pos.copy_span(), msg.to_string())); + self + } + + pub fn with_annotations( + mut self, + pos_iter: impl Iterator, + ) -> Self { + self.annotations.extend( + pos_iter.map(|(pos, msg)| (pos.copy_span(), msg.to_string())), + ); + self + } + pub fn with_post_msg(mut self, msg: Option) -> Self { self.post_msg = msg; self @@ -40,6 +84,7 @@ impl Error { Self { kind: Box::new(ErrorKind::ReservedName(name)), pos: GPosIdx::UNKNOWN, + annotations: vec![], post_msg: None, } } @@ -47,6 +92,7 @@ impl Error { Self { kind: Box::new(ErrorKind::MalformedControl(msg.to_string())), pos: GPosIdx::UNKNOWN, + annotations: vec![], post_msg: None, } } @@ -54,6 +100,7 @@ impl Error { Self { kind: Box::new(ErrorKind::MalformedStructure(msg.to_string())), pos: GPosIdx::UNKNOWN, + annotations: vec![], post_msg: None, } } @@ -64,6 +111,7 @@ impl Error { msg.to_string(), )), pos: GPosIdx::UNKNOWN, + annotations: vec![], post_msg: None, } } @@ -71,6 +119,7 @@ impl Error { Self { kind: Box::new(ErrorKind::Undefined(name, typ.to_string())), pos: GPosIdx::UNKNOWN, + annotations: vec![], post_msg: None, } } @@ -78,6 +127,7 @@ impl Error { Self { kind: Box::new(ErrorKind::AlreadyBound(name, typ.to_string())), pos: GPosIdx::UNKNOWN, + annotations: vec![], post_msg: None, } } @@ -85,6 +135,7 @@ impl Error { Self { kind: Box::new(ErrorKind::Unused(group, typ.to_string())), pos: GPosIdx::UNKNOWN, + annotations: vec![], post_msg: None, } } @@ -92,6 +143,7 @@ impl Error { Self { kind: Box::new(ErrorKind::Papercut(msg.to_string())), pos: GPosIdx::UNKNOWN, + annotations: vec![], post_msg: None, } } @@ -99,13 +151,23 @@ impl Error { Self { kind: Box::new(ErrorKind::Misc(msg.to_string())), pos: GPosIdx::UNKNOWN, + annotations: vec![], post_msg: None, } } + pub fn parse_error(msg: S) -> Self { + Self { + kind: Box::new(ErrorKind::Parse), + pos: GPosIdx::UNKNOWN, + annotations: vec![], + post_msg: Some(msg.to_string()), + } + } pub fn invalid_file(msg: S) -> Self { Self { kind: Box::new(ErrorKind::InvalidFile(msg.to_string())), pos: GPosIdx::UNKNOWN, + annotations: vec![], post_msg: None, } } @@ -113,6 +175,7 @@ impl Error { Self { kind: Box::new(ErrorKind::WriteError(msg.to_string())), pos: GPosIdx::UNKNOWN, + annotations: vec![], post_msg: None, } } @@ -122,9 +185,19 @@ impl Error { pub fn message(&self) -> String { self.kind.to_string() } + pub fn annotations(&self) -> Vec<(String, usize, usize)> { + self.annotations + .iter() + .map(|(pos, msg)| { + let (_, s, e) = pos.get_location(); + (msg.to_string(), s, e) + }) + .collect() + } } /// Standard error type for Calyx errors. +#[derive(Clone)] enum ErrorKind { /// Using a reserved keyword as a program identifier. ReservedName(Id), @@ -149,6 +222,8 @@ enum ErrorKind { Papercut(String), // =========== Frontend Errors =============== + /// Parse error + Parse, /// Miscellaneous error message Misc(String), /// The input file is invalid (does not exist). @@ -183,6 +258,9 @@ impl std::fmt::Display for ErrorKind { MalformedStructure(msg) => { write!(f, "Malformed Structure: {msg}") } + Parse => { + write!(f, "Parse error") + } InvalidFile(msg) | WriteError(msg) | Misc(msg) => { write!(f, "{msg}") } @@ -209,3 +287,35 @@ impl From for Error { Error::write_error(format!("serde_json Error: {}", e)) } } + +impl From for MultiError { + fn from(value: std::str::Utf8Error) -> Self { + MultiError { + errors: vec![value.into()], + } + } +} + +impl From for MultiError { + fn from(value: std::io::Error) -> Self { + MultiError { + errors: vec![value.into()], + } + } +} + +impl From for MultiError { + fn from(value: serde_json::Error) -> Self { + MultiError { + errors: vec![value.into()], + } + } +} + +impl From for MultiError { + fn from(value: Error) -> Self { + MultiError { + errors: vec![value], + } + } +} diff --git a/calyx-utils/src/lib.rs b/calyx-utils/src/lib.rs index a08e486900..f7ea268f5f 100644 --- a/calyx-utils/src/lib.rs +++ b/calyx-utils/src/lib.rs @@ -3,17 +3,19 @@ mod errors; mod id; mod namegenerator; mod out_file; +mod pos_string; mod position; mod weight_graph; mod math; pub(crate) mod measure_time; -pub use errors::{CalyxResult, Error}; +pub use errors::{CalyxResult, Error, MultiError}; pub use id::{GSym, GetName, Id}; pub use math::bits_needed_for; pub use namegenerator::NameGenerator; pub use out_file::OutputFile; +pub use pos_string::PosString; pub use position::{ FileIdx, GPosIdx, GlobalPositionTable, PosIdx, PositionTable, WithPos, }; diff --git a/calyx-utils/src/pos_string.rs b/calyx-utils/src/pos_string.rs new file mode 100644 index 0000000000..26528c0d54 --- /dev/null +++ b/calyx-utils/src/pos_string.rs @@ -0,0 +1,60 @@ +use crate::{GPosIdx, WithPos}; + +/// A positioned string. +#[derive(Clone, Debug, Default)] +pub struct PosString { + data: String, + span: GPosIdx, +} + +impl From for PosString { + fn from(data: String) -> PosString { + PosString { + data, + span: GPosIdx::UNKNOWN, + } + } +} + +impl From for String { + fn from(value: PosString) -> String { + value.data + } +} + +impl ToString for PosString { + fn to_string(&self) -> String { + self.data.to_string() + } +} + +impl AsRef for PosString { + fn as_ref(&self) -> &str { + &self.data + } +} + +impl AsRef for PosString { + fn as_ref(&self) -> &std::path::Path { + self.data.as_ref() + } +} + +impl WithPos for PosString { + fn copy_span(&self) -> GPosIdx { + self.span + } +} + +impl PosString { + /// Construct a nw PosString from a String and a span. + pub fn new(data: String, span: GPosIdx) -> Self { + Self { data, span } + } + + /// Add a span to an existing PosString. + pub fn with_span(mut self, span: GPosIdx) -> Self { + self.span = span; + self + } +} diff --git a/calyx-utils/src/position.rs b/calyx-utils/src/position.rs index 4648bb64ba..33b16ab1c5 100644 --- a/calyx-utils/src/position.rs +++ b/calyx-utils/src/position.rs @@ -184,14 +184,13 @@ impl GPosIdx { (buf, out_idx, out_line) } - /// Format this position with a the error message `err_msg` - pub fn format>(&self, err_msg: S) -> String { + /// Format this position with the error message `err_msg` + pub fn format_raw>(&self, err_msg: S) -> String { let table = GlobalPositionTable::as_ref(); let pos_d = table.get_pos(self.0); - let name = &table.get_file_data(pos_d.file).name; let (lines, pos, linum) = self.get_lines(); - let mut buf = name.to_string(); + let mut buf = String::new(); let l = lines[0]; let linum_text = format!("{} ", linum); @@ -201,7 +200,6 @@ impl GPosIdx { l.len() - (pos_d.start - pos), )); let space: String = " ".repeat(pos_d.start - pos); - writeln!(buf).unwrap(); writeln!(buf, "{}|{}", linum_text, l).unwrap(); write!( buf, @@ -215,6 +213,18 @@ impl GPosIdx { buf } + /// Format this position with filename header and the error message `err_msg` + pub fn format>(&self, err_msg: S) -> String { + let table = GlobalPositionTable::as_ref(); + let pos_d = table.get_pos(self.0); + let name = &table.get_file_data(pos_d.file).name; + + let mut buf = name.to_string(); + writeln!(buf).unwrap(); + write!(buf, "{}", self.format_raw(err_msg)).unwrap(); + buf + } + pub fn get_location(&self) -> (&str, usize, usize) { let table = GlobalPositionTable::as_ref(); let pos_d = table.get_pos(self.0); @@ -222,7 +232,7 @@ impl GPosIdx { (name, pos_d.start, pos_d.end) } - /// Visualizes the span without any message or mkaring + /// Visualizes the span without any message or marking pub fn show(&self) -> String { let (lines, _, linum) = self.get_lines(); let l = lines[0]; @@ -236,3 +246,9 @@ pub trait WithPos { /// Copy the span associated with this node. fn copy_span(&self) -> GPosIdx; } + +impl WithPos for GPosIdx { + fn copy_span(&self) -> GPosIdx { + *self + } +} diff --git a/interp/src/errors.rs b/interp/src/errors.rs index 13bf6a641e..bade735a02 100644 --- a/interp/src/errors.rs +++ b/interp/src/errors.rs @@ -3,7 +3,7 @@ use crate::{ flatten::flat_ir::prelude::AssignedValue, utils::assignment_to_string, }; use calyx_ir::{self as ir, Assignment, Id}; -use calyx_utils::Error as CalyxError; +use calyx_utils::{Error as CalyxError, MultiError as CalyxMultiError}; use rustyline::error::ReadlineError; use thiserror::Error; @@ -98,6 +98,10 @@ pub enum InterpreterError { #[error("{0:?}")] CompilerError(Box), + /// Wrapper error for compiler multi errors + #[error("{0:?}")] + CompilerMultiError(Box), + /// There is no main component in the given program #[error("no main component")] MissingMainComponent, @@ -238,6 +242,12 @@ impl From for InterpreterError { } } +impl From for InterpreterError { + fn from(e: CalyxMultiError) -> Self { + Self::CompilerMultiError(Box::new(e)) + } +} + impl From> for InterpreterError { diff --git a/src/main.rs b/src/main.rs index 4317f9222e..786c2172dc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,12 +9,11 @@ mod cmdline; use calyx_backend::BackendOpt; use calyx_frontend as frontend; use calyx_ir as ir; -use calyx_opt::pass_manager::PassManager; -use calyx_utils::CalyxResult; +use calyx_opt::pass_manager::{PassManager, PassResult}; use cmdline::{CompileMode, Opts}; use itertools::Itertools; -fn main() -> CalyxResult<()> { +fn main() -> PassResult<()> { // parse the command line arguments into Opts struct let mut opts = Opts::get_opts()?; @@ -100,6 +99,6 @@ fn main() -> CalyxResult<()> { Ok(()) } else { - opts.run_backend(ctx) + Ok(opts.run_backend(ctx)?) } } diff --git a/tests/errors/comb-component-groups.expect b/tests/errors/comb-component-groups.expect index 9355e5f7b4..04ce3df32a 100644 --- a/tests/errors/comb-component-groups.expect +++ b/tests/errors/comb-component-groups.expect @@ -4,3 +4,7 @@ Error: tests/errors/comb-component-groups.futil 8 | comb group g { | ^^^^^^^^^^^^^^ Malformed Structure: Component `custom_lt` is marked combinational but contains a group `g` + +tests/errors/comb-component-groups.futil +8 | comb group g { + | ^^^^^^^^^^^^^^ Unused combinational group `g' diff --git a/tests/errors/comb-port-in-condition.expect b/tests/errors/comb-port-in-condition.expect index 255fbe7ab7..cd40aeb43c 100644 --- a/tests/errors/comb-port-in-condition.expect +++ b/tests/errors/comb-port-in-condition.expect @@ -1,7 +1,7 @@ ---CODE--- 1 ---STDERR--- -[WARN calyx_opt::passes::well_formed] tests/errors/comb-port-in-condition.futil +[WARN well-formed] tests/errors/comb-port-in-condition.futil 9 | if le.out { seq {} } | ^^^^^^^^^^^^^^^^^^^^ If statement has no comb group and its condition port le.out is unstable Error: tests/errors/comb-port-in-condition.futil diff --git a/tests/errors/comb-static-comp.expect b/tests/errors/comb-static-comp.expect index 65cabc7a64..0693d42b00 100644 --- a/tests/errors/comb-static-comp.expect +++ b/tests/errors/comb-static-comp.expect @@ -1,9 +1,7 @@ ---CODE--- 1 ---STDERR--- -Error: Failed to parse `tests/errors/comb-static-comp.futil`: --> 3:1 - | -3 | comb static<1> component custom_lt(left: 4, right: 4) -> (out: 1) { - | ^------------^ - | - = Cannot have both comb and static annotations +Error: tests/errors/comb-static-comp.futil +3 |comb static<1> component custom_lt(left: 4, right: 4) -> (out: 1) { + |^^^^^^^^^^^^^^ Parse error +Cannot have both comb and static annotations diff --git a/tests/errors/group-comb-conflict.expect b/tests/errors/group-comb-conflict.expect index 3b91f98c49..aa623e231d 100644 --- a/tests/errors/group-comb-conflict.expect +++ b/tests/errors/group-comb-conflict.expect @@ -1,10 +1,12 @@ ---CODE--- 1 ---STDERR--- -Error: Malformed Structure: Obviously conflicting assignments found: -14 | w1.in = r.out; +Error: tests/errors/group-comb-conflict.futil 11 | w1.in = 32'd10; - -tests/errors/group-comb-conflict.futil + | ^^^^^^^^^^^^^^^ Malformed Structure: Obviously conflicting assignments found +... +14 | w1.in = r.out; + | ^^^^^^^^^^^^^^ `w1.in` is also written to here +... 22 | do_r; - | ^^^^^ Assigments activated by group enable + | ^^^^^ Assignments activated by group enable, causing the conflict diff --git a/tests/errors/group-cont-assign-conflict.expect b/tests/errors/group-cont-assign-conflict.expect index d05a796dd2..ac87e65d03 100644 --- a/tests/errors/group-cont-assign-conflict.expect +++ b/tests/errors/group-cont-assign-conflict.expect @@ -1,10 +1,12 @@ ---CODE--- 1 ---STDERR--- -Error: Malformed Structure: Obviously conflicting assignments found: -13 | r.in = 32'd10; +Error: tests/errors/group-cont-assign-conflict.futil 16 | r.in = w1.out; - -tests/errors/group-cont-assign-conflict.futil + | ^^^^^^^^^^^^^^ Malformed Structure: Obviously conflicting assignments found +... +13 | r.in = 32'd10; + | ^^^^^^^^^^^^^^ `r.in` is also written to here +... 19 | do_r; - | ^^^^^ Assigments activated by group enable + | ^^^^^ Assignments activated by group enable, causing the conflict diff --git a/tests/errors/if-cond-conflict.expect b/tests/errors/if-cond-conflict.expect index 3db4accd6c..828edc4721 100644 --- a/tests/errors/if-cond-conflict.expect +++ b/tests/errors/if-cond-conflict.expect @@ -1,10 +1,22 @@ ---CODE--- 1 ---STDERR--- -Error: Malformed Structure: Obviously conflicting assignments found: -14 | w1.in = 32'd2; +Error: tests/errors/if-cond-conflict.futil 11 | w1.in = 32'd1; + | ^^^^^^^^^^^^^^ Malformed Structure: Obviously conflicting assignments found +... +14 | w1.in = 32'd2; + | ^^^^^^^^^^^^^^ `w1.in` is also written to here +... +24 | if w1.out with w1_2 { + | ^^^^^^^^^^^^^^^^^^^^^ Assignments from `w1_2' are activated here, causing the conflict tests/errors/if-cond-conflict.futil -24 | if w1.out with w1_2 { - | ^^^^^^^^^^^^^^^^^^^^^ Assignments from `w1_2' are actived here +14 | w1.in = 32'd2; + | ^^^^^^^^^^^^^^ Malformed Structure: Obviously conflicting assignments found +... +11 | w1.in = 32'd1; + | ^^^^^^^^^^^^^^ `w1.in` is also written to here +... +25 | do_r; + | ^^^^^ Assignments activated by group enable, causing the conflict diff --git a/tests/errors/mem-only-reads.expect b/tests/errors/mem-only-reads.expect index 71fbda7cc9..9df9d9601b 100644 --- a/tests/errors/mem-only-reads.expect +++ b/tests/errors/mem-only-reads.expect @@ -1,4 +1,6 @@ ---CODE--- 1 ---STDERR--- -Error: [Papercut] Only reads performed on memory `mem'. Synthesis tools will remove this memory. Add @external to cell to turn this into an interface memory. +Error: tests/errors/mem-only-reads.futil +5 | mem = comb_mem_d1(32, 4, 4); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [Papercut] Only reads performed on memory `mem'. Synthesis tools will remove this memory. Add @external to cell to turn this into an interface memory. diff --git a/tests/errors/multiple-attr-vals.expect b/tests/errors/multiple-attr-vals.expect index d1aa9154d2..5f0853cc76 100644 --- a/tests/errors/multiple-attr-vals.expect +++ b/tests/errors/multiple-attr-vals.expect @@ -1,9 +1,7 @@ ---CODE--- 1 ---STDERR--- -Error: Failed to parse `tests/errors/multiple-attr-vals.futil`: --> 5:5 - | -5 | @external(1) @external(2) r = std_reg(32); - | ^-----------------------^ - | - = Malformed Structure: Multiple entries for attribute: external +Error: tests/errors/multiple-attr-vals.futil +5 | @external(1) @external(2) r = std_reg(32); + | ^^^^^^^^^^^^^^^^^^^^^^^^^ Parse error +Malformed Structure: Multiple entries for attribute: external diff --git a/tests/errors/obvious-conflict.expect b/tests/errors/obvious-conflict.expect index 77fcf9cd9a..bb80a77973 100644 --- a/tests/errors/obvious-conflict.expect +++ b/tests/errors/obvious-conflict.expect @@ -1,7 +1,9 @@ ---CODE--- 1 ---STDERR--- -Error: Malformed Structure: Obviously conflicting assignments found: -11 | r.in = w1.out; +Error: tests/errors/obvious-conflict.futil 12 | r.in = w2.out; - + | ^^^^^^^^^^^^^^ Malformed Structure: Obviously conflicting assignments found +... +11 | r.in = w1.out; + | ^^^^^^^^^^^^^^ `r.in` is also written to here diff --git a/tests/errors/orphan-done.expect b/tests/errors/orphan-done.expect index edeaaf735a..6d23ee2e30 100644 --- a/tests/errors/orphan-done.expect +++ b/tests/errors/orphan-done.expect @@ -1,4 +1,10 @@ ---CODE--- 1 ---STDERR--- -Error: Malformed Structure: Group `two` refers to the done condition of another group (`one`). +Error: tests/errors/orphan-done.futil +16 | one[done] = r.done; + | ^^^^^^^^^^^^^^^^^^^ Malformed Structure: Group `two` refers to the done condition of another group (`one`) + +tests/errors/orphan-done.futil +17 | two[done] = r.done; + | ^^^^^^^^^^^^^^^^^^^ Malformed Structure: Group `two` has multiple done conditions diff --git a/tests/errors/papercut/multi-done.expect b/tests/errors/papercut/multi-done.expect index 2205081840..99f90f2325 100644 --- a/tests/errors/papercut/multi-done.expect +++ b/tests/errors/papercut/multi-done.expect @@ -1,4 +1,6 @@ ---CODE--- 1 ---STDERR--- -Error: [Papercut] Component `mem_0_comp` has an empty control program and does not assign to the done port `write_done`. Without an assignment to the done port, the component cannot return control flow. +Error: tests/errors/papercut/multi-done.futil +2 |component mem_0_comp<"toplevel"=1>(addr0: 3, @go read_en: 1, write_data: 32, @go(2) write_en: 1, @clk clk: 1, @reset reset: 1) -> (read_data: 32, @done read_done: 1, @done(2) write_done: 1) { + |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [Papercut] Component `mem_0_comp` has an empty control program and does not assign to the done port `write_done`. Without an assignment to the done port, the component cannot return control flow. diff --git a/tests/errors/papercut/no-control-no-done.expect b/tests/errors/papercut/no-control-no-done.expect index a3b6255457..753f8d5a18 100644 --- a/tests/errors/papercut/no-control-no-done.expect +++ b/tests/errors/papercut/no-control-no-done.expect @@ -1,4 +1,6 @@ ---CODE--- 1 ---STDERR--- -Error: [Papercut] Component `main` has an empty control program and does not assign to the done port `done`. Without an assignment to the done port, the component cannot return control flow. +Error: tests/errors/papercut/no-control-no-done.futil +4 |component main(@go go: 1) -> (@done done: 1) { + |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [Papercut] Component `main` has an empty control program and does not assign to the done port `done`. Without an assignment to the done port, the component cannot return control flow. diff --git a/tests/errors/parser/cell-missing-semi.expect b/tests/errors/parser/cell-missing-semi.expect index e7a6b2eb3f..c49c6e4f5d 100644 --- a/tests/errors/parser/cell-missing-semi.expect +++ b/tests/errors/parser/cell-missing-semi.expect @@ -1,10 +1,7 @@ ---CODE--- 1 ---STDERR--- -Error: Failed to parse `tests/errors/parser/cell-missing-semi.futil`: --> 4:5 - | -4 | h = std_reg(32) -5 | l = std_reg(32);␊ - | ^ - | - = Declaration is missing `;` +Error: tests/errors/parser/cell-missing-semi.futil +4 | h = std_reg(32) + | ^^^^^^^^^^^^^^^ Parse error +Declaration is missing `;` diff --git a/tests/errors/parser/invalid-width.expect b/tests/errors/parser/invalid-width.expect index da317d8965..d21801f019 100644 --- a/tests/errors/parser/invalid-width.expect +++ b/tests/errors/parser/invalid-width.expect @@ -1,9 +1,7 @@ ---CODE--- 1 ---STDERR--- -Error: Failed to parse `tests/errors/parser/invalid-width.futil`: --> 4:12 - | -4 | r.in = 0'd1; - | ^--^ - | - = Cannot represent given literal '1' in 0 bits +Error: tests/errors/parser/invalid-width.futil +4 | r.in = 0'd1; + | ^^^^ Parse error +Cannot represent given literal '1' in 0 bits diff --git a/tests/errors/parser/invalid-width2.expect b/tests/errors/parser/invalid-width2.expect index 9de23ef8b9..e6a346cae9 100644 --- a/tests/errors/parser/invalid-width2.expect +++ b/tests/errors/parser/invalid-width2.expect @@ -1,9 +1,7 @@ ---CODE--- 1 ---STDERR--- -Error: Failed to parse `tests/errors/parser/invalid-width2.futil`: --> 4:12 - | -4 | r.in = 5'xaa; - | ^---^ - | - = Cannot represent given literal 'aa' in 5 bits +Error: tests/errors/parser/invalid-width2.futil +4 | r.in = 5'xaa; + | ^^^^^ Parse error +Cannot represent given literal 'aa' in 5 bits diff --git a/tests/errors/parser/invalid-width3.expect b/tests/errors/parser/invalid-width3.expect index f3c72b88e6..5022484986 100644 --- a/tests/errors/parser/invalid-width3.expect +++ b/tests/errors/parser/invalid-width3.expect @@ -1,9 +1,7 @@ ---CODE--- 1 ---STDERR--- -Error: Failed to parse `tests/errors/parser/invalid-width3.futil`: --> 4:12 - | -4 | r.in = 1'o10; - | ^---^ - | - = Cannot represent given literal '10' in 1 bit +Error: tests/errors/parser/invalid-width3.futil +4 | r.in = 1'o10; + | ^^^^^ Parse error +Cannot represent given literal '10' in 1 bit diff --git a/tests/errors/parser/invalid-width4.expect b/tests/errors/parser/invalid-width4.expect index 5d8eed6e2e..d6d5019636 100644 --- a/tests/errors/parser/invalid-width4.expect +++ b/tests/errors/parser/invalid-width4.expect @@ -1,9 +1,7 @@ ---CODE--- 1 ---STDERR--- -Error: Failed to parse `tests/errors/parser/invalid-width4.futil`: --> 4:12 - | -4 | r.in = 2'd4; - | ^--^ - | - = Cannot represent given literal '4' in 2 bits +Error: tests/errors/parser/invalid-width4.futil +4 | r.in = 2'd4; + | ^^^^ Parse error +Cannot represent given literal '4' in 2 bits diff --git a/tests/errors/parser/num-without-bitwidth.expect b/tests/errors/parser/num-without-bitwidth.expect index 8d09ee7d64..985175bc93 100644 --- a/tests/errors/parser/num-without-bitwidth.expect +++ b/tests/errors/parser/num-without-bitwidth.expect @@ -1,9 +1,7 @@ ---CODE--- 1 ---STDERR--- -Error: Failed to parse `tests/errors/parser/num-without-bitwidth.futil`: --> 4:12 - | -4 | r.in = 1; - | ^ - | - = Expected number with bitwidth (like 32'd10). +Error: tests/errors/parser/num-without-bitwidth.futil +4 | r.in = 1; + | ^ Parse error +Expected number with bitwidth (like 32'd10). diff --git a/tests/errors/parser/sig-missing-comma.expect b/tests/errors/parser/sig-missing-comma.expect index 19531b5518..6646827df0 100644 --- a/tests/errors/parser/sig-missing-comma.expect +++ b/tests/errors/parser/sig-missing-comma.expect @@ -1,9 +1,7 @@ ---CODE--- 1 ---STDERR--- -Error: Failed to parse `tests/errors/parser/sig-missing-comma.futil`: --> 3:5 - | -3 | b: 2 - | ^ - | - = expected comma +Error: tests/errors/parser/sig-missing-comma.futil +3 | b: 2 + | Parse error +expected comma diff --git a/tests/errors/parser/wrong-binary-num.expect b/tests/errors/parser/wrong-binary-num.expect index 0aa04f6064..7ac8e9f787 100644 --- a/tests/errors/parser/wrong-binary-num.expect +++ b/tests/errors/parser/wrong-binary-num.expect @@ -1,9 +1,7 @@ ---CODE--- 1 ---STDERR--- -Error: Failed to parse `tests/errors/parser/wrong-binary-num.futil`: --> 4:16 - | -4 | r.in = 10'b22; - | ^^ - | - = Expected binary number +Error: tests/errors/parser/wrong-binary-num.futil +4 | r.in = 10'b22; + | ^^ Parse error +Expected binary number diff --git a/tests/errors/redefine-external.expect b/tests/errors/redefine-external.expect index d322c2bc35..16a7a84e02 100644 --- a/tests/errors/redefine-external.expect +++ b/tests/errors/redefine-external.expect @@ -1,4 +1,6 @@ ---CODE--- 1 ---STDERR--- -Error: Name `exp' already bound by component or primitive +Error: tests/errors/redefine-external.futil +8 |component exp() -> () { + |^^^^^^^^^^^^^^^^^^^^^^^ Name `exp' already bound by component or primitive diff --git a/tests/errors/while-unstable.expect b/tests/errors/while-unstable.expect index 28b37eda08..e51e91eb9e 100644 --- a/tests/errors/while-unstable.expect +++ b/tests/errors/while-unstable.expect @@ -20,6 +20,6 @@ component main(@go go: 1, @clk clk: 1, @reset reset: 1) -> (@done done: 1) { } } ---STDERR--- -[WARN calyx_opt::passes::well_formed] tests/errors/while-unstable.futil +[WARN well-formed] tests/errors/while-unstable.futil 20 | while lt.out { - | ^^^^^^^^^^^^^^ While loop has no comb group and its condition port lt.out is unstable + | ^^^^^^^^^^^^^^ While loop has no comb group and its condition port `lt.out` is unstable diff --git a/web/rust/src/lib.rs b/web/rust/src/lib.rs index bf43e76bf9..df464b0736 100644 --- a/web/rust/src/lib.rs +++ b/web/rust/src/lib.rs @@ -3,7 +3,7 @@ use std::path::PathBuf; use calyx_frontend as frontend; use calyx_ir as ir; -use calyx_opt::pass_manager::PassManager; +use calyx_opt::pass_manager::{PassManager, PassResult}; use calyx_utils::{CalyxResult, Error}; use wasm_bindgen::prelude::*; @@ -29,7 +29,7 @@ fn compile( passes: &[String], library: &str, namespace: &str, -) -> CalyxResult { +) -> PassResult { let pm = PassManager::default_passes()?; let ns = frontend::parser::CalyxParser::parse(