patterns

satomic_pattern:=
patterns | true(pat_const_ctor (ast_case_tag 1))
patterns | false(pat_const_ctor (ast_case_tag 0))
patterns | STRING
patterns | ? NAME
patterns | _pat_any
patterns | ( spattern )
patterns | struct { spat_assigns }
patterns | sctor_name satomic_pattern
patterns | sctor_name
patterns | STRING .. STRING
patterns | sintegral
patterns | sintegral .. sintegral
patterns | NaNpat_nan
patterns | sfloating .. sfloating
spat_assign:=
patterns | NAME = spattern ;
spat_assigns:=
patterns | spat_assign
patterns | spat_assign spat_assigns
sctor_name:=
patterns | squalified_name
patterns | case INTEGER
sfloating:=
patterns | sfloat
patterns | - sfloat
patterns | infFloat_inf
patterns | - infFloat_minus_inf
scoercive_pattern:=
patterns | satomic_pattern
patterns | satomic_pattern : sarrow
stuple_pattern:=
patterns | scoercive_pattern
patterns | scoercive_pattern stuple_pattern_suffix
stuple_pattern_suffix:=
patterns | , scoercive_pattern
patterns | , scoercive_pattern stuple_pattern_suffix
sas_pattern:=
patterns | stuple_pattern
patterns | stuple_pattern as NAME
spattern:=
patterns | sas_pattern
patterns | sas_pattern when sexpr