{
  "version": "v1",
  "pages": [
    {
      "title": "Grammar Diff",
      "path": "grammar/diff.html",
      "content": "Grammar Diff Skip to content Grammar Diff (vN vs vN+1) vN vN+1 t 1 &lt;&lt;&lt;&nbsp;========================================================= t 1 &lt;&lt;&lt;&nbsp;========================================================= 2 &nbsp;&nbsp;&nbsp;Vitte&nbsp;—&nbsp;Active&nbsp;Frontend&nbsp;Grammar 2 &nbsp;&nbsp;&nbsp;Vitte&nbsp;—&nbsp;Active&nbsp;Frontend&nbsp;Grammar 3 &nbsp;&nbsp;&nbsp;parser-aligned&nbsp;surface&nbsp;for&nbsp;docs/tests/frontend&nbsp;sync 3 &nbsp;&nbsp;&nbsp;parser-aligned&nbsp;surface&nbsp;for&nbsp;docs/tests/frontend&nbsp;sync 4 &nbsp;&nbsp;&nbsp;canonical&nbsp;blocks:&nbsp;{&nbsp;} 4 &nbsp;&nbsp;&nbsp;canonical&nbsp;blocks:&nbsp;{&nbsp;} 5 &nbsp;&nbsp;&nbsp;This&nbsp;file&nbsp;describes&nbsp;the&nbsp;syntax&nbsp;currently&nbsp;preserved&nbsp;by&nbsp;the 5 &nbsp;&nbsp;&nbsp;This&nbsp;file&nbsp;describes&nbsp;the&nbsp;syntax&nbsp;currently&nbsp;preserved&nbsp;by&nbsp;the 6 &nbsp;&nbsp;&nbsp;active&nbsp;frontend&nbsp;AST&nbsp;builder.&nbsp;Ambitious&nbsp;future-only&nbsp;surfaces 6 &nbsp;&nbsp;&nbsp;active&nbsp;frontend&nbsp;AST&nbsp;builder.&nbsp;Ambitious&nbsp;future-only&nbsp;surfaces 7 &nbsp;&nbsp;&nbsp;should&nbsp;not&nbsp;be&nbsp;specified&nbsp;here&nbsp;until&nbsp;they&nbsp;are&nbsp;actually&nbsp;built. 7 &nbsp;&nbsp;&nbsp;should&nbsp;not&nbsp;be&nbsp;specified&nbsp;here&nbsp;until&nbsp;they&nbsp;are&nbsp;actually&nbsp;built. 8 &nbsp;&nbsp;&nbsp;=========================================================&nbsp;&gt;&gt;&gt; 8 &nbsp;&nbsp;&nbsp;=========================================================&nbsp;&gt;&gt;&gt; 9 9 10 program&nbsp;::=&nbsp;WS?&nbsp;{&nbsp;toplevel&nbsp;WS?&nbsp;}&nbsp;EOF&nbsp;; 10 program&nbsp;::=&nbsp;WS?&nbsp;{&nbsp;toplevel&nbsp;WS?&nbsp;}&nbsp;EOF&nbsp;; 11 11 12 &lt;&lt;&lt;&nbsp;=================&nbsp;Top-level&nbsp;=================&nbsp;&gt;&gt;&gt; 12 &lt;&lt;&lt;&nbsp;=================&nbsp;Top-level&nbsp;=================&nbsp;&gt;&gt;&gt; 13 13 14 toplevel&nbsp;::=&nbsp;inner_attribute 14 toplevel&nbsp;::=&nbsp;inner_attribute 15 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;space_decl 15 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;space_decl 16 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;use_decl 16 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;use_decl 17 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;export_decl 17 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;export_decl 18 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;const_decl 18 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;const_decl 19 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;static_decl 19 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;static_decl 20 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;region_decl 20 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;region_decl 21 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;type_alias_decl 21 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;type_alias_decl 22 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;opaque_type_decl 22 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;opaque_type_decl 23 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;extern_type_decl 23 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;extern_type_decl 24 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;form_decl 24 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;form_decl 25 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;class_decl 25 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;class_decl 26 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;union_decl 26 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;union_decl 27 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;bits_decl 27 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;bits_decl 28 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;pick_decl 28 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;pick_decl 29 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;flags_decl 29 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;flags_decl 30 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;trait_decl 30 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;trait_decl 31 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;impl_decl 31 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;impl_decl 32 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;extern_block 32 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;extern_block 33 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n",
      "lang": "en",
      "section": "grammar"
    },
    {
      "title": "Grammar Inventory",
      "path": "grammar/grammar_inventory.html",
      "content": "Grammar Inventory Skip to content Grammar Inventory Rule Name Category BINDIGIT other DIGIT other EOF other HEXDIGIT other LETTER other NEWLINE other OCTDIGIT other WS other WS1 other add_expr expression addr_space other alignof_expr expression and_expr expression arg other arg_list other asm_arg other asm_arg_list other asm_stmt statement assert_stmt statement assign_expr expression assign_op other assign_target other associated_type_decl declaration attr_arg other attr_arg_list other attr_path other attr_prefix other await_suffix other backend_decl declaration bench_decl declaration bit_and_expr expression bit_or_expr expression bit_xor_expr expression bitfield_item other bitfield_list other bits_decl declaration block other block_comment other bool_lit other break_stmt statement builtin_expr expression bytes_lit other call_suffix other callconv other capability other capability_list other case_field other case_item other case_list other case_payload other cast_expr expression char_char other char_lit other class_decl declaration class_item other class_items other coalesce_expr expression compiler_decl declaration const_decl declaration continue_stmt statement critical_stmt statement defer_stmt statement diagnostic_decl declaration doc_comment other docstring other dyn_type other effects_clause other emit_stmt statement entry_decl declaration eq_expr expression escape_seq other exponent other export_decl declaration expr expression expr_stmt statement extern_abi other extern_block other extern_clause other extern_item other extern_proc_decl declaration extern_type_decl declaration field_init other field_init_list other field_item other field_list other fixed_array_type other flag_item other flag_list other flags_decl declaration float_lit other for_stmt statement form_decl declaration form_item other form_items other generic_param other generic_param_list other generic_params other give_stmt statement ident other ident_list other ident_or_string other if_expr expression if_stmt statement impl_decl declaration impl_head other impl_item other impl_trait_type other import_item other import_items other index_expr expression index_suffix other inner_attribute other int_lit other intrinsic_decl declaration lambda_expr expression let_stmt statement lifetime other line_comment other list_comp other list_lit other literal other local_const_stmt statement loop_stmt statement macro_decl declaration macro_kind other macro_param other macro_param_list other map_item other map_items other map_lit other match_arm_body other match_expr expression match_stmt statement member_suffix other meta_arg other meta_arg_list other meta_args other meta_tail other module_path other mul_expr expression nameof_expr expression normal_param other null_lit other offsetof_expr expression opaque_type_decl declaration operator_symbol other optional_type other or_expr expression outer_attribute other package_parts other package_path other panic_stmt statement param other param_list other param_mode other pass_decl declaration path_expr expression pattern other pattern_args other pattern_atom other pattern_bind other pattern_ctor other pattern_field other pattern_fields other pattern_head other pattern_list other pattern_or other pattern_range other pattern_struct other pattern_tuple other pick_decl declaration pointer_type other postfix_expr expression primary other primitive_type other proc_decl declaration proc_expr expression proc_modifier other proc_name other proc_signature other proc_suffix other proc_type other program other query_body other query_decl declaration range_expr expression raw_string_char other raw_string_lit other reference_type other region_capabilities other region_decl declaration region_kind other rel_expr expression rel_op other relative other requires_clause other resource_item other resource_items other resource_lit other select_stmt statement self_param other set_lit other set_stmt statement shift_expr expression sizeof_expr expression slice_expr expression slice_type other space_decl declaration static_assert_decl declaration static_decl declaration stmt other stmt_end other string_char other string_lit other struct_lit other suffix other ternary_expr expression test_decl declaration toplevel other trait_bound other trait_decl declaration trait_item other try_stmt statement try_suffix other tuple_lit other tuple_type other type_alias_decl declaration type_atom other type_expr expression type_list other type_param other type_path other type_prefix other type_primary other type_qual other type_qualifier other type_union other typeof_expr expression unary_expr expression union_decl declaration unreachable_stmt statement unsafe_expr expression unsafe_stmt statement use_decl declaration use_glob other use_group other variadic_param other visibility other visibility_scope other when_match_stmt statement where_bound other where_bounds other where_clause other while_stmt statement with_stmt statement zone_comment other",
      "lang": "en",
      "section": "grammar"
    },
    {
      "title": "Vitte Grammar Practical Guide",
      "path": "grammar/index.html",
      "content": "Vitte Grammar Practical Guide Skip to content Vitte Grammar Practical Guide Practical usage guide generated from src/vitte/grammar/vitte.ebnf . Reading Paths Beginner Start with space_decl , use_decl , const_decl , proc_decl . Write tiny files with one declaration at a time. Validate syntax before mixing advanced constructs. Intermediate Study type_alias_decl , form_decl , class_decl , impl_decl . Practice generics and where-clauses. Check expression and statement combinations. Expert Focus on compiler surface: compiler_decl , query_decl , backend_decl . Use grammar as strict contract for tooling and tests. Track parser behavior against edge cases per production. Rule Validation Table Rule Valid Example Invalid Example Expected Diagnostic space_decl space vitte/compiler/entry space Missing module path after `space`. use_decl use vitte/io use Import path missing after `use`. proc_decl proc main() -&gt; int { give 0 } proc main( -&gt; int { give 0 } Malformed parameter list or signature. const_decl const VERSION: string = &quot;1.0&quot; const = &quot;1.0&quot; Const identifier is required. entry_decl entry app at vitte/bootstrap { } entry app vitte/bootstrap { } Missing `at` in entry declaration. expr a + b * c a + * c Unexpected operator placement in expression. Rule Anchors Index program toplevel space_decl use_decl use_glob use_group import_items import_item export_decl const_decl static_decl region_decl region_kind region_capabilities type_alias_decl opaque_type_decl extern_type_decl form_decl class_decl union_decl form_items form_item class_items class_item field_list field_item bits_decl bitfield_list bitfield_item pick_decl case_list case_item case_payload case_field flags_decl flag_list flag_item trait_decl trait_item associated_type_decl impl_decl impl_head impl_item proc_signature proc_decl proc_name operator_symbol proc_modifier proc_suffix extern_block extern_item extern_proc_decl extern_clause extern_abi callconv intrinsic_decl macro_decl macro_param_list macro_param macro_kind static_assert_decl test_decl bench_decl entry_decl visibility visibility_scope generic_params generic_param_list generic_param where_clause where_bounds where_bound trait_bound param_list param self_param normal_param variadic_param param_mode effects_clause requires_clause capability_list capability module_path package_path relative package_parts ident_list query_decl query_body compiler_decl pass_decl backend_decl diagnostic_decl ident_or_string meta_args meta_arg_list meta_arg meta_tail attr_prefix inner_attribute outer_attribute doc_comment docstring attr_path attr_arg_list attr_arg block stmt stmt_end local_const_stmt let_stmt set_stmt assign_target give_stmt try_stmt defer_stmt asm_stmt asm_arg_list asm_arg Full EBNF (Anchored) &lt;&lt;&lt; ========================================================= Vitte — Active Frontend Grammar parser-aligned surface for docs/tests/frontend sync canonical blocks: { } This file describes the syntax currently preserved by the active frontend AST builder. Ambitious future-only surfaces should not be specified here until they are actually built. ========================================================= &gt;&gt;&gt; program ::= WS? { toplevel WS? } EOF ; &lt;&lt;&lt; ================= Top-level ================= &gt;&gt;&gt; toplevel ::= inner_attribute | space_decl | use_decl | export_decl | const_decl | static_decl | region_decl | type_alias_decl | opaque_type_decl | extern_type_decl | form_decl | class_decl | union_decl | bits_decl | pick_decl | flags_decl | trait_decl | impl_decl | extern_block | proc_decl | intrinsic_decl | compiler_decl | query_decl | pass_decl | backend_decl | diagnostic_decl | macro_decl | static_assert_decl | test_decl | bench_decl | entry_decl ; space_decl ::= &quot;space&quot; WS1 module_path ; use_decl ::= &quot;use&quot; WS1 package_path [ use_group | use_glob ] [ WS1 &quot;as&quot; WS1 ident ] ; use_glob ::= &quot;.&quot; &quot;*&quot; ; use_group ::= &quot;.&quot; &quot;{&quot; WS? ( &quot;*&quot; | import_items [ WS? &quot;,&quot; WS? &quot;*&quot; ]? ) WS? &quot;}&quot; ; import_items ::= import_item { WS? &quot;,&quot; WS? import_item } [ WS? &quot;,&quot; ] ; import_item ::= ident [ WS1 &quot;as&quot; WS1 ident ] ; export_decl ::= &quot;export&quot; WS1 ( &quot;*&quot; | ident_list | &quot;{&quot; WS? ident_list WS? &quot;}&quot; ) ; const_decl ::= { attr_prefix WS? } &quot;const&quot; WS1 ident [ WS? &quot;:&quot; WS? type_expr ] WS? &quot;=&quot; WS? expr ; static_decl ::= { attr_prefix WS? } &quot;static&quot; WS1 ident [ WS? &quot;:&quot; WS? type_expr ] WS? &quot;=&quot; WS? expr ; region_decl ::= { attr_prefix WS? } &quot;region&quot; WS1 ident [ WS? &quot;:&quot; WS? region_kind ] [ WS? region_capabilities ] WS? meta_tail ; region_kind ::= &quot;stack&quot; | &quot;heap&quot; | &quot;arena&quot; | &quot;static&quot; | &quot;mmio&quot; | &quot;dma&quot; | ident ; region_capabilities ::= &quot;(&quot; WS? ident_list? WS? &quot;)&quot; ; type_alia",
      "lang": "en",
      "section": "grammar"
    },
    {
      "title": "AST/HIR/MIR Pipeline Overview",
      "path": "grammar/pipeline.html",
      "content": "AST/HIR/MIR Pipeline Overview Skip to content AST/HIR/MIR Pipeline Overview Lexer Parser AST HIR Semantic Analysis Type Checking Borrow Checking MIR Backend Lexer The lexer tokenizes the source code into a stream of tokens, which are the basic units of syntax. Parser The parser processes tokens according to grammar rules to produce an abstract syntax tree (AST). AST The Abstract Syntax Tree represents the syntactic structure of the source code in a tree form. HIR The High-level Intermediate Representation (HIR) is a semantic representation derived from the AST. Semantic Analysis This phase analyzes the HIR to check for semantic correctness like scope and type usage. Type Checking Type checking ensures that operations in the code are performed on compatible types. Borrow Checking Borrow checking enforces rules about ownership and lifetimes of references. MIR The Mid-level Intermediate Representation (MIR) is a lowered form of HIR optimized for analysis and transformation. Backend The backend generates executable code or other output formats from the MIR.",
      "lang": "en",
      "section": "grammar"
    },
    {
      "title": "Grammar Pocket",
      "path": "grammar/pocket.html",
      "content": "Grammar Pocket Skip to content Grammar Pocket Reference Checksum: 4ab4e767d61092f8b4f0c031e617d8ddaccf9515fbf6ba702a107b2bca58b7f2 program ::= WS? { toplevel WS? } EOF ; toplevel ::= inner_attribute space_decl ::= &quot;space&quot; WS1 module_path ; use_decl ::= &quot;use&quot; WS1 package_path [ use_group | use_glob ] [ WS1 &quot;as&quot; WS1 ident ] ; use_glob ::= &quot;.&quot; &quot;*&quot; ; use_group ::= &quot;.&quot; &quot;{&quot; WS? ( &quot;*&quot; | import_items [ WS? &quot;,&quot; WS? &quot;*&quot; ]? ) WS? &quot;}&quot; ; import_items ::= import_item { WS? &quot;,&quot; WS? import_item } [ WS? &quot;,&quot; ] ; import_item ::= ident [ WS1 &quot;as&quot; WS1 ident ] ; export_decl ::= &quot;export&quot; WS1 ( &quot;*&quot; | ident_list | &quot;{&quot; WS? ident_list WS? &quot;}&quot; ) ; const_decl ::= { attr_prefix WS? } &quot;const&quot; WS1 ident [ WS? &quot;:&quot; WS? type_expr ] WS? &quot;=&quot; WS? expr ; static_decl ::= { attr_prefix WS? } &quot;static&quot; WS1 ident [ WS? &quot;:&quot; WS? type_expr ] WS? &quot;=&quot; WS? expr ; region_decl ::= { attr_prefix WS? } &quot;region&quot; WS1 ident [ WS? &quot;:&quot; WS? region_kind ] [ WS? region_capabilities ] WS? meta_tail ; region_kind ::= &quot;stack&quot; | &quot;heap&quot; | &quot;arena&quot; | &quot;static&quot; | &quot;mmio&quot; | &quot;dma&quot; | ident ; region_capabilities ::= &quot;(&quot; WS? ident_list? WS? &quot;)&quot; ; type_alias_decl ::= { attr_prefix WS? } &quot;type&quot; WS1 ident [ generic_params ] WS? &quot;=&quot; WS? type_expr ; opaque_type_decl ::= { attr_prefix WS? } &quot;opaque&quot; WS1 &quot;type&quot; WS1 ident [ generic_params ] [ WS? &quot;=&quot; WS? type_expr ] ; extern_type_decl ::= { attr_prefix WS? } &quot;extern&quot; WS1 &quot;type&quot; WS1 ident [ generic_params ] [ WS? &quot;;&quot; ] ; form_decl ::= { attr_prefix WS? } &quot;form&quot; WS1 ident [ generic_params ] [ WS? where_clause ] WS? &quot;{&quot; WS? form_items? WS? &quot;}&quot; ; class_decl ::= { attr_prefix WS? } &quot;class&quot; WS1 ident [ generic_params ] [ WS? where_clause ] WS? &quot;{&quot; WS? class_items? WS? &quot;}&quot; ; union_decl ::= { attr_prefix WS? } &quot;union&quot; WS1 ident [ generic_params ] [ WS? where_clause ] WS? &quot;{&quot; WS? field_list? WS? &quot;}&quot; ; form_items ::= form_item { WS? &quot;,&quot;? WS? form_item } [ WS? &quot;,&quot; ] ; form_item ::= field_item | const_decl | type_alias_decl | proc_decl ; class_items ::= class_item { WS? &quot;,&quot;? WS? class_item } [ WS? &quot;,&quot; ] ; class_item ::= field_item | const_decl | type_alias_decl | proc_decl ; field_list ::= field_item { WS? &quot;,&quot; WS? field_item } [ WS? &quot;,&quot; ] ; field_item ::= { attr_prefix WS? } [ visibility WS1 ] ident WS? &quot;:&quot; WS? type_expr [ WS? &quot;=&quot; WS? expr ] ; bits_decl ::= { attr_prefix WS? } &quot;bits&quot; WS1 ident [ WS? &quot;:&quot; WS? type_expr ] WS? &quot;{&quot; WS? bitfield_list? WS? &quot;}&quot; ; bitfield_list ::= bitfield_item { WS? &quot;,&quot; WS? bitfield_item } [ WS? &quot;,&quot; ] ; bitfield_item ::= ident WS? &quot;:&quot; WS? expr WS? &quot;..&quot; WS? expr ; pick_decl ::= { attr_prefix WS? } &quot;pick&quot; WS1 ident [ generic_params ] [ WS? &quot;:&quot; WS? type_expr ] [ WS? where_clause ] WS? &quot;{&quot; WS? case_list? WS? &quot;}&quot; ; case_list ::= case_item { WS? &quot;,&quot; WS? case_item } [ WS? &quot;,&quot; ] ; case_item ::= [ &quot;case&quot; WS1 ] ident [ &quot;(&quot; WS? case_payload? WS? &quot;)&quot; ] [ WS? &quot;=&quot; WS? expr ] ; case_payload ::= case_field { WS? &quot;,&quot; WS? case_field } [ WS? &quot;,&quot; ] ; case_field ::= ident WS? &quot;:&quot; WS? type_expr | type_expr ; flags_decl ::= { attr_prefix WS? } &quot;flags&quot; WS1 ident [ WS? &quot;:&quot; WS? type_expr ] WS? &quot;{&quot; WS? flag_list? WS? &quot;}&quot; ; flag_list ::= flag_item { WS? &quot;,&quot; WS? flag_item } [ WS? &quot;,&quot; ] ; flag_item ::= ident [ WS? &quot;=&quot; WS? expr ] ; trait_decl ::= { attr_prefix WS? } [ &quot;unsafe&quot; WS1 ] &quot;trait&quot; WS1 ident [ generic_params ] [ WS? where_clause ] WS? &quot;{&quot; WS? trait_item* WS? &quot;}&quot; ; trait_item ::= proc_signature | const_decl | associated_type_decl ; associated_type_decl ::= &quot;type&quot; WS1 ident [ WS? &quot;:&quot; WS? trait_bound ] [ WS? &quot;=&quot; WS? type_expr ] ; impl_decl ::= { attr_prefix WS? } [ &quot;unsafe&quot; WS1 ] &quot;impl&quot; WS1 impl_head [ WS? where_clause ] WS? &quot;{&quot; WS? impl_item* WS? &quot;}&quot; ; impl_head ::= type_expr | type_expr WS1 &quot;for&quot; WS1 type_expr ; impl_item ::= const_decl | type_alias_decl | associated_type_decl | proc_decl ; proc_signature ::= { attr_prefix WS? } &quot;proc&quot; WS1 ident [ generic_params ] proc_decl ::= { attr_prefix WS? } [ visibility WS1 ] proc_modifier* [ extern_clause WS1 ] &quot;proc&quot; WS1 proc_name [ generic_params ] proc_name ::= ident | &quot;operator&quot; WS? operator_symbol ; op",
      "lang": "en",
      "section": "grammar"
    },
    {
      "title": "Priorité de grammaire",
      "path": "grammar/precedence.html",
      "content": "Priorité de grammaire Skip to content Vitte Welcome Documentation Download Source Community News Diagnostics Suggestions Grammar Priority Compatibility point for operator precedence. grammar/precedence.html Back to home",
      "lang": "en",
      "section": "grammar"
    },
    {
      "title": "Railroad Diagram Index",
      "path": "grammar/railroad_index.html",
      "content": "Railroad Diagram Index Skip to content Railroad Diagram Index Rule Status space_decl available use_decl available from_decl missing const_decl available form_decl available class_decl available pick_decl available proc_decl available entry_decl available macro_decl available stmt available expr available type_expr available match_expr available select_stmt available if_stmt available while_stmt available for_stmt available",
      "lang": "en",
      "section": "grammar"
    },
    {
      "title": "Grammar Search Index",
      "path": "grammar/search.html",
      "content": "Grammar Search Index Skip to content Grammar Search Index A B C D E F G H I L M N O P Q R S T U V W Z A add_expr addr_space alignof_expr and_expr arg arg_list asm_arg asm_arg_list asm_stmt assert_stmt assign_expr assign_op assign_target associated_type_decl attr_arg attr_arg_list attr_path attr_prefix await_suffix B BINDIGIT backend_decl bench_decl bit_and_expr bit_or_expr bit_xor_expr bitfield_item bitfield_list bits_decl block block_comment bool_lit break_stmt builtin_expr bytes_lit C call_suffix callconv capability capability_list case_field case_item case_list case_payload cast_expr char_char char_lit class_decl class_item class_items coalesce_expr compiler_decl const_decl continue_stmt critical_stmt D DIGIT defer_stmt diagnostic_decl doc_comment docstring dyn_type E EOF effects_clause emit_stmt entry_decl eq_expr escape_seq exponent export_decl expr expr_stmt extern_abi extern_block extern_clause extern_item extern_proc_decl extern_type_decl F field_init field_init_list field_item field_list fixed_array_type flag_item flag_list flags_decl float_lit for_stmt form_decl form_item form_items G generic_param generic_param_list generic_params give_stmt H HEXDIGIT I ident ident_list ident_or_string if_expr if_stmt impl_decl impl_head impl_item impl_trait_type import_item import_items index_expr index_suffix inner_attribute int_lit intrinsic_decl L LETTER lambda_expr let_stmt lifetime line_comment list_comp list_lit literal local_const_stmt loop_stmt M macro_decl macro_kind macro_param macro_param_list map_item map_items map_lit match_arm_body match_expr match_stmt member_suffix meta_arg meta_arg_list meta_args meta_tail module_path mul_expr N NEWLINE nameof_expr normal_param null_lit O OCTDIGIT offsetof_expr opaque_type_decl operator_symbol optional_type or_expr outer_attribute P package_parts package_path panic_stmt param param_list param_mode pass_decl path_expr pattern pattern_args pattern_atom pattern_bind pattern_ctor pattern_field pattern_fields pattern_head pattern_list pattern_or pattern_range pattern_struct pattern_tuple pick_decl pointer_type postfix_expr primary primitive_type proc_decl proc_expr proc_modifier proc_name proc_signature proc_suffix proc_type program Q query_body query_decl R range_expr raw_string_char raw_string_lit reference_type region_capabilities region_decl region_kind rel_expr rel_op relative requires_clause resource_item resource_items resource_lit S select_stmt self_param set_lit set_stmt shift_expr sizeof_expr slice_expr slice_type space_decl static_assert_decl static_decl stmt stmt_end string_char string_lit struct_lit suffix T ternary_expr test_decl toplevel trait_bound trait_decl trait_item try_stmt try_suffix tuple_lit tuple_type type_alias_decl type_atom type_expr type_list type_param type_path type_prefix type_primary type_qual type_qualifier type_union typeof_expr U unary_expr union_decl unreachable_stmt unsafe_expr unsafe_stmt use_decl use_glob use_group V variadic_param visibility visibility_scope W WS WS1 when_match_stmt where_bound where_bounds where_clause while_stmt with_stmt Z zone_comment",
      "lang": "en",
      "section": "grammar"
    },
    {
      "title": "Grammar Statistics",
      "path": "grammar/statistics.html",
      "content": "Grammar Statistics Skip to content Grammar Statistics Statistic Value Total Rules 256 Grammar Lines 626 Grammar Size (bytes) 23721 Average Rule Density 0.4089 Declaration Rules 31 Statement Rules 24 Expression Rules 33 Checksum 4ab4e767d61092f8b4f0c031e617d8ddaccf9515fbf6ba702a107b2bca58b7f2 Build Timestamp (UTC) 2026-07-18T06:21:22.704233+00:00 Keyword Frequency Keyword Count class 3 const 2 entry 1 for 4 form 3 from 0 if 6 macro 4 match 4 pick 1 proc 8 return 0 select 1 space 2 use 7 while 1",
      "lang": "en",
      "section": "grammar"
    },
    {
      "title": "Grammar Status",
      "path": "grammar/status.html",
      "content": "Grammar Status Skip to content Grammar Status { &quot;checksum&quot;: &quot;4ab4e767d61092f8b4f0c031e617d8ddaccf9515fbf6ba702a107b2bca58b7f2&quot;, &quot;built_at_utc&quot;: &quot;2026-07-18T06:21:22.819225+00:00&quot;, &quot;rules_count&quot;: 256, &quot;coverage_percent&quot;: 0.0, &quot;parser_compat&quot;: &quot;aligned to src/vitte/grammar/vitte.ebnf&quot; }",
      "lang": "en",
      "section": "grammar"
    },
    {
      "title": "Grammar Toolbox",
      "path": "grammar/toolbox.html",
      "content": "Grammar Toolbox Skip to content Grammar Toolbox Coverage: 0.00% (0/256) Frequent Errors mapped to Diagnostics Error Rule Expected Diagnostic Missing module path after space space_decl top-level parse error: expected module path Malformed proc signature proc_decl signature parse error: expected ) or parameter Missing const identifier const_decl declaration parse error: expected identifier Missing at in entry declaration entry_decl entry parse error: expected keyword at Operator placement invalid expr expression parse error: unexpected operator token Syntax Constructor Matrix declaration space_decl , use_decl , export_decl , const_decl , static_decl , region_decl , type_alias_decl , opaque_type_decl , extern_type_decl , form_decl , class_decl , union_decl , bits_decl , pick_decl , flags_decl , trait_decl , associated_type_decl , impl_decl , proc_decl , extern_proc_decl , intrinsic_decl , macro_decl , static_assert_decl , test_decl , bench_decl , entry_decl , query_decl , compiler_decl , pass_decl , backend_decl , diagnostic_decl statement stmt , local_const_stmt , let_stmt , set_stmt , give_stmt , try_stmt , defer_stmt , asm_stmt , unsafe_stmt , emit_stmt , assert_stmt , panic_stmt , unreachable_stmt , if_stmt , while_stmt , loop_stmt , for_stmt , break_stmt , continue_stmt , select_stmt , match_stmt , when_match_stmt , with_stmt , critical_stmt , expr_stmt expression expr , assign_expr , ternary_expr , coalesce_expr , range_expr , or_expr , and_expr , bit_or_expr , bit_xor_expr , bit_and_expr , eq_expr , rel_expr , shift_expr , add_expr , mul_expr , cast_expr , unary_expr , postfix_expr , index_expr , slice_expr , path_expr , if_expr , proc_expr , match_expr , lambda_expr , unsafe_expr , builtin_expr , sizeof_expr , alignof_expr , offsetof_expr , typeof_expr , nameof_expr , type_expr By Keyword proc proc_signature , proc_decl , proc_name , proc_modifier , proc_suffix , extern_proc_decl , proc_expr , proc_type form form_decl , form_items , form_item pick pick_decl macro macro_decl , macro_param_list , macro_param , macro_kind trait trait_decl , trait_item , trait_bound , impl_trait_type impl impl_decl , impl_head , impl_item , impl_trait_type entry entry_decl query query_decl , query_body backend backend_decl compiler compiler_decl Rule to Tests Traceability Rule Tests program none toplevel none space_decl none use_decl none use_glob none use_group none import_items none import_item none export_decl none const_decl none static_decl none region_decl none region_kind none region_capabilities none type_alias_decl none opaque_type_decl none extern_type_decl none form_decl none class_decl none union_decl none form_items none form_item none class_items none class_item none field_list none field_item none bits_decl none bitfield_list none bitfield_item none pick_decl none case_list none case_item none case_payload none case_field none flags_decl none flag_list none flag_item none trait_decl none trait_item none associated_type_decl none impl_decl none impl_head none impl_item none proc_signature none proc_decl none proc_name none operator_symbol none proc_modifier none proc_suffix none extern_block none extern_item none extern_proc_decl none extern_clause none extern_abi none callconv none intrinsic_decl none macro_decl none macro_param_list none macro_param none macro_kind none static_assert_decl none test_decl none bench_decl none entry_decl none visibility none visibility_scope none generic_params none generic_param_list none generic_param none where_clause none where_bounds none where_bound none trait_bound none param_list none param none self_param none normal_param none variadic_param none param_mode none effects_clause none requires_clause none capability_list none capability none module_path none package_path none relative none package_parts none ident_list none query_decl none query_body none compiler_decl none pass_decl none backend_decl none diagnostic_decl none ident_or_string none meta_args none meta_arg_list none meta_arg none meta_tail none attr_prefix none inner_attribute none outer_attribute none doc_comment none docstring none attr_path none attr_arg_list none attr_arg none block none stmt none stmt_end none local_const_stmt none let_stmt none set_stmt none assign_target none give_stmt none try_stmt none defer_stmt none asm_stmt none asm_arg_list none asm_arg none unsafe_stmt none emit_stmt none assert_stmt none panic_stmt none unreachable_stmt none if_stmt none while_stmt none loop_stmt none for_stmt none break_stmt none continue_stmt none select_stmt none match_stmt none match_arm_body none when_match_stmt none with_stmt none critical_stmt none expr_stmt none expr none assign_expr none assign_op none ternary_expr none coalesce_expr none range_expr none or_expr none and_expr none bit_or_expr none bit_xor_expr none bit_and_expr none eq_expr none rel_expr none rel_op none shift_expr none add_expr none mul_expr none cast_expr none unary_expr none postfix_expr none call_suffix none member_suffix none ",
      "lang": "en",
      "section": "grammar"
    }
  ]
}
