{"body":"    token infix:sym<?? !!> {\n        $<sym>=['⁇' || '??']\n        :my $*GOAL := ~$<sym> eq '??' ?? '!!' !! '‼';\n        :my $*TERNARYBEGIN := ~$<sym>;\n        <.ws>\n        <EXPR('i=')>\n        [ $*GOAL\n        || <?before '::' <.-[=]>> { self.typed_panic: \"X::Syntax::ConditionalOperator::SecondPartInvalid\", second-part => \"::\" }\n        || <?before ':' <.-[=\\w]>> { self.typed_panic: \"X::Syntax::ConditionalOperator::SecondPartInvalid\", second-part => \":\" }\n        || <infixish> { self.typed_panic: \"X::Syntax::ConditionalOperator::PrecedenceTooLoose\", operator => ~$<infixish> }\n        || <?{ ~$<EXPR> ~~ / $*GOAL / }> { self.typed_panic: \"X::Syntax::ConditionalOperator::SecondPartGobbled\" }\n        || <?before \\N*? [\\n\\N*?]? $*GOAL> { self.typed_panic: \"X::Syntax::Confused\", reason => \"Confused: Bogus code found before the !! of conditional operator\" }\n        || { self.typed_panic: \"X::Syntax::Confused\", reason => \"Confused: Found $*TERNARYBEGIN but no $*GOAL\" }\n        ]\n        <O(|%conditional, :reducecheck<ternary>, :pasttype<if>)>\n    }\n\n    token infix_prefix_meta_operator:sym<!> {\n        <sym> <![!]> {} [ <infixish('neg')> || <.panic: \"Negation metaoperator not followed by valid infix\"> ]\n        [\n        || <?{ $<infixish>.Str eq '=' }> <O(|%chaining)>\n        || <.can_meta($<infixish>, \"negate\")> <?{ $<infixish><OPER><O>.made<iffy> }> <O=.AS_MATCH($<infixish><OPER><O>)>\n        || { self.typed_panic: \"X::Syntax::CannotMeta\", meta => \"negate\", operator => ~$<infixish>, dba => ~$<infixish><OPER><O>.made<dba>, reason => \"not iffy enough\" }\n        ]\n    }","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/gQSxKzMR","modified":1488387836,"id":"gQSxKzMR","size":1593,"lines":25,"own_paste":false,"theme":"","date":1488387836}