        "abc = <foreign a-token> 'b' 'c'"
        ";EBNF"
    }
-} 
+}
 ;
 
 ARTICLE: "peg.ebnf.tokenizers" "Tokenizers"

"however and does not leave any result in the AST. This can be used for lookahead and "
"disambiguation in choices."
{ $examples
    { $example 
       "USING: prettyprint peg.ebnf ;"
       "\"<abcd>\" [EBNF rule=\"<\" (!(\">\") .)* \">\" EBNF] ."
       "V{ \"<\" V{ 97 98 99 100 } \">\" }"
    }
} 
;
                    
ARTICLE: "peg.ebnf.action" "Action"
"An action is a quotation that is run after a rule matches. The quotation "
"consumes the AST of the rule match and leaves a new AST as the result. "
"The stack effect of the action can be " { $snippet "( ast -- ast )" } " or "
{ $snippet "( -- ast )" } ". "
"If it is the latter then the original AST is implcitly dropped and will be "
"replaced by the AST left on the stack. This is mostly useful if variables are "
"used in the rule since they can be referenced like locals in the action quotation. "
"The action is defined by having a ' => ' at the end of a rule and "

       "\"2\" [EBNF rule=[0-9] ?[ digit> odd? ]? EBNF] ."
       "Sequence index out of bounds\nindex 0\nseq   V{ }"
    }
}
;

ARTICLE: "peg.ebnf.variable" "Variable"
