xref: /aosp_15_r20/external/antlr/runtime/Cpp/tests/t024finally.g (revision 16467b971bd3e2009fad32dd79016f2c7e421deb)
1*16467b97STreehugger Robotgrammar t024finally;
2*16467b97STreehugger Robot
3*16467b97STreehugger Robotoptions {
4*16467b97STreehugger Robot    language=Cpp;
5*16467b97STreehugger Robot}
6*16467b97STreehugger Robot
7*16467b97STreehugger Robot@lexer::includes
8*16467b97STreehugger Robot{
9*16467b97STreehugger Robot#include "UserTestTraits.hpp"
10*16467b97STreehugger Robot}
11*16467b97STreehugger Robot@lexer::namespace
12*16467b97STreehugger Robot{ Antlr3Test }
13*16467b97STreehugger Robot
14*16467b97STreehugger Robot@parser::includes {
15*16467b97STreehugger Robot#include "UserTestTraits.hpp"
16*16467b97STreehugger Robot}
17*16467b97STreehugger Robot@parser::namespace
18*16467b97STreehugger Robot{ Antlr3Test }
19*16467b97STreehugger Robot
20*16467b97STreehugger Robotprog returns [events]
21*16467b97STreehugger Robot@init {events = []}
22*16467b97STreehugger Robot@after {events.append('after')}
23*16467b97STreehugger Robot    :   ID {raise RuntimeError}
24*16467b97STreehugger Robot    ;
25*16467b97STreehugger Robot    catch [RuntimeError] {events.append('catch')}
26*16467b97STreehugger Robot    finally {events.append('finally')}
27*16467b97STreehugger Robot
28*16467b97STreehugger RobotID  :   ('a'..'z')+
29*16467b97STreehugger Robot    ;
30*16467b97STreehugger Robot
31*16467b97STreehugger RobotWS  :   (' '|'\n'|'\r')+ {$channel=HIDDEN}
32*16467b97STreehugger Robot    ;
33