1optional_indent(Data,Indent,Data1) -->
2 {
3 indent_data(Indent,Data,Data1)
4 },
5 optional_indent(Data,Indent),!.
6
7statement(Data,enum(Name,Body)) -->
8 namespace(Data,Data1,Name,Indent),
9 enum_(Data,[
10 symbol(Name),
11 enum_list(Data1,Body),
12 Indent
13 ]),!.
14
15statement(Data,Type1,function(Name,Type,Params1,Body)) -->
16 17 namespace(Data,Data1,Name1,Indent),
18 function_(Data,[
19 function_name(Data,Type,Name,Params1),
20 type(Data,Type),
21 parameters(Data1,Params1),
22 statements(Data1,Type,Body),
23 Indent
24 ]),!.
25
27statement(Data,Name,class(Name,Body)) -->
28 optional_indent(Data,Indent,Data1),
29 class_(Data,[
30 symbol(Name),
31 class_statements(Data1,Name,Body),
32 Indent
33 ]),!.
34
35statement(Data,C1,class_extends(C2,B)) -->
36 namespace(Data,Data1,C1,Indent),
37 class_extends_(Data,[
38 symbol(C1),
39 symbol(C2),
40 class_statements(Data1,C1,B),
41 Indent
42 ]),!.
43
44statement(Data,Return_type,semicolon(A)) -->
45 {Data = [_,_,_,Indent],offside_rule_langs(Offside_rule_langs)},
46 optional_indent(Data,Indent,_),
47 semicolon_(Data,[
48 statement_with_semicolon(Data,Return_type,A)
49 ]),!.
50
51statement(Data,Return_type,for(Statement1,Expr,Statement2,Body)) -->
52 optional_indent(Data,Indent,Data1),
53 for_(Data,[
54 statement_with_semicolon(Data,Return_type,Statement1),
55 expr(Data,bool,Expr),
56 statement_with_semicolon(Data,Return_type,Statement2),
57 statements(Data1,Return_type,Body),
58 Indent
59 ]),!.
60
61statement(Data,Return_type,foreach_with_index(Array,Var,Index,Body,Type)) -->
62 optional_indent(Data,Indent,Data1),
63 foreach_with_index_(Data,[
64 expr(Data,[array,Type],Array),
65 var_name_(Data,Type,Var),
66 expr(Data,int,Index),
67 type(Data,Type),
68 statements(Data1,Return_type,Body),
69 Indent
70 ]),!.
71
72statement(Data,Return_type,foreach(Array,Var,Body,Type)) -->
73 optional_indent(Data,Indent,Data1),
74 foreach_(Data,[
75 expr(Data,[array,Type],Array),
76 var_name_(Data,Type,Var),
77 type(Data,Type),
78 statements(Data1,Return_type,Body),
79 Indent
80 ]),!.
81
82statement(Data,Return_type,try_catch(Body1,Name,Body2)) -->
83 optional_indent(Data,Indent,Data1),
84 try_catch_(Data,[
85 statements(Data1,Return_type,Body1),
86 var_name_(Data1,int,Name),
87 statements(Data1,Return_type,Body2),
88 Indent
89 ]),!.
90
91statement(Data,Return_type,while(Expr,Body)) -->
92 optional_indent(Data,Indent,Data1),
93 while_(Data,[
94 expr(Data,bool,Expr),
95 statements(Data1,Return_type,Body),
96 Indent
97 ]),!.
98
99statement(Data,Return_type,do_while(Expr,Body)) -->
100 optional_indent(Data,Indent,Data1),
101 do_while_(Data,[
102 expr(Data,bool,Expr),
103 statements(Data1,Return_type,Body),
104 Indent
105 ]),!.
106
107
108statement(Data,Return_type,if(Expr_,Statements_,Elif_or_else_,Else_)) -->
109 optional_indent(Data,Indent,Data1),
110 if(Data,[
111 expr(Data,bool,Expr_),
112 statements(Data1,Return_type,Statements_),
113 elif_statements(Data,Return_type,Elif_or_else_),
114 else(Data,Return_type,Else_),
115 Indent
116 ]),!.
117
118statement(Data,Return_type,if_without_else(Expr_,Statements_,Elif_or_else_,Else_)) -->
119 optional_indent(Data,Indent,Data1),
120 if_without_else_(Data,[
121 expr(Data,bool,Expr_),
122 statements(Data1,Return_type,Statements_),
123 Indent
124 ]),!.
125
126statement(Data,Return_type,unless(Expr_,Statements_,Elif_or_else_,Else_)) -->
127 optional_indent(Data,Indent,Data1),
128 unless_(Data,[
129 expr(Data,bool,Expr_),
130 statements(Data1,Return_type,Statements_),
131 Indent
132 ]),!.
133
134statement(Data,Return_type, switch(Expr_,Expr1_,Statements_,Case_or_default_)) -->
135 optional_indent(Data,Indent,Data1),
136 switch_(Data,[
137 parentheses_expr(Data,int,Expr_),
138 first_case(Data1,Return_type,Expr_,int,[Expr1_,Statements_,Case_or_default_]),
139 Indent
140 ]),!