Grammar Toolbox

Coverage: 0.00% (0/271)

Frequent Errors mapped to Diagnostics

ErrorRuleExpected Diagnostic
Missing module path after spacespace_decltop-level parse error: expected module path
Malformed proc signatureproc_declsignature parse error: expected ) or parameter
Missing const identifierconst_decldeclaration parse error: expected identifier
Missing at in entry declarationentry_declentry parse error: expected keyword at
Operator placement invalidexprexpression parse error: unexpected operator token

Syntax Constructor Matrix

declarationspace_decl, use_decl, export_decl, const_decl, static_decl, global_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, comptime_decl, static_assert_decl, test_decl, bench_decl, entry_decl, compiler_decl, compiler_phase_decl, compiler_stage_decl, compiler_artifact_decl, compiler_pipeline_decl, compiler_cache_decl, compiler_target_decl, query_decl, pass_decl, backend_decl, diagnostic_decl
statementstmt, 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
expressionexpr, 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, backend_format

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, backend_items, backend_item, backend_format, backend_output

compiler

compiler_decl, compiler_items, compiler_item, compiler_phase_decl, compiler_stage_decl, compiler_artifact_decl, compiler_pipeline_decl, compiler_cache_decl, compiler_target_decl

Rule to Tests Traceability

RuleTests
programnone
toplevelnone
space_declnone
use_declnone
use_globnone
use_groupnone
import_itemsnone
import_itemnone
export_declnone
const_declnone
static_declnone
global_declnone
type_alias_declnone
opaque_type_declnone
extern_type_declnone
form_declnone
class_declnone
union_declnone
form_itemsnone
form_itemnone
class_itemsnone
class_itemnone
field_listnone
field_itemnone
bits_declnone
bitfield_listnone
bitfield_itemnone
pick_declnone
case_listnone
case_itemnone
case_payloadnone
case_fieldnone
flags_declnone
flag_listnone
flag_itemnone
trait_declnone
trait_itemnone
associated_type_declnone
impl_declnone
impl_headnone
impl_itemnone
proc_signaturenone
proc_declnone
proc_namenone
operator_symbolnone
proc_modifiernone
proc_suffixnone
extern_blocknone
extern_itemnone
extern_proc_declnone
extern_clausenone
extern_abinone
callconvnone
intrinsic_declnone
macro_declnone
macro_param_listnone
macro_paramnone
macro_kindnone
comptime_declnone
static_assert_declnone
test_declnone
bench_declnone
entry_declnone
visibilitynone
visibility_scopenone
generic_paramsnone
generic_param_listnone
generic_paramnone
where_clausenone
where_boundsnone
where_boundnone
trait_boundnone
param_listnone
paramnone
self_paramnone
normal_paramnone
variadic_paramnone
param_modenone
effects_clausenone
requires_clausenone
capability_listnone
capabilitynone
module_pathnone
package_pathnone
relativenone
package_partsnone
ident_listnone
compiler_declnone
compiler_itemsnone
compiler_itemnone
compiler_phase_declnone
compiler_stage_declnone
compiler_artifact_declnone
compiler_pipeline_declnone
pipeline_stepnone
compiler_cache_declnone
cache_itemnone
compiler_target_declnone
target_itemnone
query_declnone
query_bodynone
pass_declnone
pass_itemsnone
pass_itemnone
backend_declnone
backend_itemsnone
backend_itemnone
backend_formatnone
backend_outputnone
diagnostic_declnone
diagnostic_codenone
diagnostic_itemsnone
diagnostic_itemnone
diagnostic_levelnone
attr_prefixnone
inner_attributenone
outer_attributenone
doc_commentnone
docstringnone
attr_pathnone
attr_arg_listnone
attr_argnone
blocknone
stmtnone
stmt_endnone
local_const_stmtnone
let_stmtnone
set_stmtnone
assign_targetnone
give_stmtnone
try_stmtnone
defer_stmtnone
asm_stmtnone
asm_arg_listnone
asm_argnone
unsafe_stmtnone
emit_stmtnone
assert_stmtnone
panic_stmtnone
unreachable_stmtnone
if_stmtnone
while_stmtnone
loop_stmtnone
for_stmtnone
break_stmtnone
continue_stmtnone
select_stmtnone
match_stmtnone
match_arm_bodynone
when_match_stmtnone
with_stmtnone
critical_stmtnone
expr_stmtnone
exprnone
assign_exprnone
assign_opnone
ternary_exprnone
coalesce_exprnone
range_exprnone
or_exprnone
and_exprnone
bit_or_exprnone
bit_xor_exprnone
bit_and_exprnone
eq_exprnone
rel_exprnone
rel_opnone
shift_exprnone
add_exprnone
mul_exprnone
cast_exprnone
unary_exprnone
postfix_exprnone
call_suffixnone
member_suffixnone
index_suffixnone
try_suffixnone
await_suffixnone
index_exprnone
slice_exprnone
primarynone
path_exprnone
arg_listnone
argnone
tuple_litnone
set_litnone
map_litnone
map_itemsnone
map_itemnone
bytes_litnone
resource_litnone
resource_itemsnone
resource_itemnone
struct_litnone
type_pathnone
field_init_listnone
field_initnone
if_exprnone
proc_exprnone
match_exprnone
lambda_exprnone
unsafe_exprnone
builtin_exprnone
sizeof_exprnone
alignof_exprnone
offsetof_exprnone
typeof_exprnone
nameof_exprnone
patternnone
pattern_ornone
pattern_atomnone
pattern_bindnone
pattern_ctornone
pattern_headnone
pattern_argsnone
pattern_structnone
pattern_fieldsnone
pattern_fieldnone
pattern_tuplenone
pattern_listnone
pattern_rangenone
type_exprnone
type_unionnone
type_prefixnone
type_qualifiernone
type_qualnone
addr_spacenone
type_atomnone
reference_typenone
pointer_typenone
optional_typenone
fixed_array_typenone
slice_typenone
tuple_typenone
proc_typenone
type_listnone
type_paramnone
dyn_typenone
impl_trait_typenone
type_primarynone
lifetimenone
primitive_typenone
literalnone
list_litnone
list_compnone
bool_litnone
null_litnone
int_litnone
float_litnone
exponentnone
char_litnone
char_charnone
string_litnone
string_charnone
escape_seqnone
raw_string_litnone
raw_string_charnone
line_commentnone
block_commentnone
zone_commentnone
identnone
suffixnone
WSnone
WS1none
NEWLINEnone
LETTERnone
DIGITnone
BINDIGITnone
OCTDIGITnone
HEXDIGITnone
EOFnone

Local Search

Lint your snippet (heuristic)

Railroad (key rules)

Pocket print / PDF

Open printable pocket reference

Playground examples (static)

proc_decl
proc main() -> int { give 0 }
const_decl
const VERSION: string = "1.0"
space_decl
space vitte/bootstrap/stage2
use_decl
use vitte/io
expr
a + b * c

Version Diff

Open vN vs vN+1 diff

API and Exports