# Pastebin gQSxKzMR token infix:sym { $=['⁇' || '??'] :my $*GOAL := ~$ eq '??' ?? '!!' !! '‼'; :my $*TERNARYBEGIN := ~$; <.ws> [ $*GOAL || > { self.typed_panic: "X::Syntax::ConditionalOperator::SecondPartInvalid", second-part => "::" } || > { self.typed_panic: "X::Syntax::ConditionalOperator::SecondPartInvalid", second-part => ":" } || { self.typed_panic: "X::Syntax::ConditionalOperator::PrecedenceTooLoose", operator => ~$ } || ~~ / $*GOAL / }> { self.typed_panic: "X::Syntax::ConditionalOperator::SecondPartGobbled" } || { self.typed_panic: "X::Syntax::Confused", reason => "Confused: Bogus code found before the !! of conditional operator" } || { self.typed_panic: "X::Syntax::Confused", reason => "Confused: Found $*TERNARYBEGIN but no $*GOAL" } ] , :pasttype)> } token infix_prefix_meta_operator:sym { {} [ || <.panic: "Negation metaoperator not followed by valid infix"> ] [ || .Str eq '=' }> || <.can_meta($, "negate")> .made }> )> || { self.typed_panic: "X::Syntax::CannotMeta", meta => "negate", operator => ~$, dba => ~$.made, reason => "not iffy enough" } ] }