BadVPN – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 %class ProtoParser
2 %start file
3  
4 file =
5 directives messages {
6 $$ = array(
7 "directives" => $1,
8 "messages" => $2
9 );
10 }.
11  
12 directives =
13 {
14 $$ = array();
15 } |
16 directive semicolon directives {
17 $$ = array_merge(array($1), $3);
18 }.
19  
20 directive =
21 include string {
22 $$ = array(
23 "type" => "include",
24 "file" => $2
25 );
26 }.
27  
28 messages =
29 msgspec {
30 $$ = array($1);
31 } |
32 msgspec messages {
33 $$ = array_merge(array($1), $2);
34 }.
35  
36 msgspec =
37 message name spar entries epar semicolon {
38 $$ = array(
39 "name" => $2,
40 "entries" => $4
41 );
42 }.
43  
44 entries =
45 entry {
46 $$ = array($1);
47 } |
48 entry entries {
49 $$ = array_merge(array($1), $2);
50 }.
51  
52 entry =
53 cardinality type name equals number semicolon {
54 $$ = array(
55 "cardinality" => $1,
56 "type" => $2,
57 "name" => $3,
58 "id" => $5
59 );
60 }.
61  
62 cardinality =
63 repeated {
64 $$ = "repeated";
65 } |
66 optional {
67 $$ = "optional";
68 } |
69 required {
70 $$ = "required";
71 } |
72 required repeated {
73 $$ = "required repeated";
74 }.
75  
76 type =
77 uint {
78 $$ = array(
79 "type" => "uint",
80 "size" => $1
81 );
82 } |
83 data {
84 $$ = array(
85 "type" => "data"
86 );
87 } |
88 data srpar string erpar {
89 $$ = array(
90 "type" => "constdata",
91 "size" => $3
92 );
93 } |
94 message name {
95 $$ = array(
96 "type" => "message",
97 "message" => $2
98 );
99 }.