-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSimpleJavaParser.jj
More file actions
80 lines (66 loc) · 1.26 KB
/
SimpleJavaParser.jj
File metadata and controls
80 lines (66 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
PARSER_BEGIN(SimpleJavaParser)
public class SimpleJavaParser
{
//global variables
private static int total = 0;
private static int count = 0;
private static int max = 0;
public static void main(String args[]) throws ParseException
{
new SimpleJavaParser(System.in).input();
System.out.println("The input is valid Duuuuuuuuuuuuuude.");
System.out.println("Average is :"+total/count);
System.out.println("Maximum is :"+max);
}
}
PARSER_END(SimpleJavaParser)
SKIP : { " " | "\n" | "\r" | "\t" }
TOKEN :
{
< PUBLIC: "public" > |
< CLASS: "class" > |
< ABS: "abstract" > |
< METHODTYPE: "void" | "int" | "double"> |
< LBRACE: "{" > |
< RBRACE: "}" > |
< OPEN: "("> |
< CLOSE: ")"> |
< COMMA: "," > |
< IDENTIFIER: ["a"-"z","A"-"Z"](["a"-"z","A"-"Z","0"-"9"])* >
}
void input() :
{
Token m;
}
{
<PUBLIC> (<ABS>)? <CLASS> (m=<IDENTIFIER>){count++;}
{
total=m.image.length();
if(max<total){
max=total;
}
}
<LBRACE>
(method())*
<RBRACE>
{
System.out.println(m);
}
}
void method():
{
Token t;
}
{
<PUBLIC> <METHODTYPE> (t=<IDENTIFIER>)
{count++;}
{
total+=t.image.length();
if(max<total){
max=total;
}
}
<OPEN><CLOSE>
<LBRACE>
<RBRACE> {System.out.println(t);}
}