blob: 5503e1cce599f026abc6d30f78a3bbbd3472c6e5 (
plain)
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
|
TracepointFmt =
'name' ':' Space n:PropertyName EndLine { free(n.string); }
'ID:' Space v:Number EndLine { yy->ctx.tp->event_id = v.integer; }
'format:' EndLine
Field+
'print fmt:' [^.]* !.
Field = Space (Property ';' Space)+ EndLine
{ yy->ctx.tp->n_fields++; }
| EndLine
Property = 'offset' ':' v:Number
{ yy->ctx.tp->fields[yy->ctx.tp->n_fields].offset = v.integer; }
| 'size' ':' v:Number
{ yy->ctx.tp->fields[yy->ctx.tp->n_fields].size = v.integer; }
| 'signed' ':' v:Number
{ yy->ctx.tp->fields[yy->ctx.tp->n_fields].is_signed = v.integer != 0; }
| 'field' ':' v:PropertyValue
{ snprintf(yy->ctx.tp->fields[yy->ctx.tp->n_fields].name,
sizeof(yy->ctx.tp->fields[yy->ctx.tp->n_fields].name),
"%s", strrchr(v.string, ' ') + 1);
free(v.string); }
| n:PropertyName ':' v:PropertyValue
{ free(n.string); free(v.string); }
PropertyName = < [A-Za-z0-9_]+ >
{ $$.string = strdup(yytext); }
PropertyValue = < [^;]+ >
{ $$.string = strdup(yytext); }
Number = < [0-9]+ >
{ $$.integer = atoi(yytext); }
EndLine = [\n]
Space = [ \t]*
|