| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- %class ProtoParser
- %start file
- file =
- directives messages {
- $$ = array(
- "directives" => $1,
- "messages" => $2
- );
- }.
- directives =
- {
- $$ = array();
- } |
- directive semicolon directives {
- $$ = array_merge(array($1), $3);
- }.
- directive =
- include string {
- $$ = array(
- "type" => "include",
- "file" => $2
- );
- }.
- messages =
- msgspec {
- $$ = array($1);
- } |
- msgspec messages {
- $$ = array_merge(array($1), $2);
- }.
- msgspec =
- message name spar entries epar semicolon {
- $$ = array(
- "name" => $2,
- "entries" => $4
- );
- }.
- entries =
- entry {
- $$ = array($1);
- } |
- entry entries {
- $$ = array_merge(array($1), $2);
- }.
- entry =
- cardinality type name equals number semicolon {
- $$ = array(
- "cardinality" => $1,
- "type" => $2,
- "name" => $3,
- "id" => $5
- );
- }.
- cardinality =
- repeated {
- $$ = "repeated";
- } |
- optional {
- $$ = "optional";
- } |
- required {
- $$ = "required";
- } |
- required repeated {
- $$ = "required repeated";
- }.
- type =
- uint {
- $$ = array(
- "type" => "uint",
- "size" => $1
- );
- } |
- data {
- $$ = array(
- "type" => "data"
- );
- } |
- data srpar string erpar {
- $$ = array(
- "type" => "constdata",
- "size" => $3
- );
- } |
- message name {
- $$ = array(
- "type" => "message",
- "message" => $2
- );
- }.
|