diff options
author | Ole Troan <ot@cisco.com> | 2017-10-12 13:06:35 +0200 |
---|---|---|
committer | Neale Ranns <nranns@cisco.com> | 2018-01-23 13:03:53 +0000 |
commit | 9d42087149a6870965896be74dc6260f72d2cac9 (patch) | |
tree | f86ed97a4b28845934aeb5fbc9dd4e33b9bdfdac /src/tools/vppapigen/gram.y | |
parent | 2aa22909c70ff5c5eed6a7f7a0f8a587c9260da8 (diff) |
VPPAPIGEN: vppapigen replacement in Python PLY.
This is a version of the VPP API generator in Python PLY. It supports
the existing language, and has a plugin architecture for generators.
Currently C and JSON are supported.
Changes:
- vl_api_version to option version = "major.minor.patch"
- enum support
- Added error checking and reporting
- import support (removed the C pre-processor)
- services (tying request/reply together)
Version:
option version = "1.0.0";
Enum:
enum colours {
RED,
BLUE = 50,
};
define foo {
vl_api_colours_t colours;
};
Services:
service {
rpc foo returns foo_reply;
rpc foo_dump returns stream foo_details;
rpc want_stats returns want_stats_reply
events ip4_counters, ip6_counters;
};
Future planned features:
- unions
- bool, text
- array support (including length)
- proto3 output plugin
- Refactor C/C++ generator as a plugin
- Refactor Java generator as a plugin
Change-Id: Ifa289966c790e1b1a8e2938a91e69331e3a58bdf
Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'src/tools/vppapigen/gram.y')
-rw-r--r-- | src/tools/vppapigen/gram.y | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/src/tools/vppapigen/gram.y b/src/tools/vppapigen/gram.y deleted file mode 100644 index 5c5d46ff4e0..00000000000 --- a/src/tools/vppapigen/gram.y +++ /dev/null @@ -1,96 +0,0 @@ -%{ -/* - * gram.y - message definition language - * - * Copyright (c) 2009 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -extern void yyerror (char *s); -extern int yylex (void); - -#define YYSTYPE void * - -void generate (YYSTYPE); - YYSTYPE add_slist(YYSTYPE, YYSTYPE); - YYSTYPE add_define(YYSTYPE, YYSTYPE); - YYSTYPE suppress_version(void); - YYSTYPE add_defbody(YYSTYPE, YYSTYPE); - YYSTYPE add_primtype(YYSTYPE, YYSTYPE, YYSTYPE); - YYSTYPE add_complex(YYSTYPE, YYSTYPE); - YYSTYPE add_union(YYSTYPE, YYSTYPE); - YYSTYPE add_scalar_vbl(YYSTYPE); - YYSTYPE add_vector_vbl(YYSTYPE, YYSTYPE); - YYSTYPE add_variable_length_vector_vbl(YYSTYPE, YYSTYPE); - YYSTYPE set_flags(YYSTYPE, YYSTYPE); - YYSTYPE add_version(YYSTYPE, YYSTYPE, YYSTYPE); -%} - -%token NAME RPAR LPAR SEMI LBRACK RBRACK NUMBER PRIMTYPE BARF -%token TPACKED DEFINE LCURLY RCURLY STRING UNION -%token HELPER_STRING COMMA DOT VL_API_VERSION -%token NOVERSION MANUAL_PRINT MANUAL_ENDIAN TYPEONLY DONT_TRACE AUTOREPLY - -%% - -pgm: slist {generate ($1);} - ; - -slist: slist stmt {$$ = add_slist ($1, $2);} - | stmt {$$ = $1;} - ; - -stmt: flist defn {$$ = set_flags($1, $2);} - | defn {$$ = $1;} - | api_version {$$ = $1;} - ; - -flist: flist flag {$$ = (YYSTYPE)(unsigned long) - ((unsigned long) $1 - | (unsigned long) $2);} - | flag {$$ = $1;} - ; - -flag: - MANUAL_PRINT {$$ = $1;} - | MANUAL_ENDIAN {$$ = $1;} - | DONT_TRACE {$$ = $1;} - | TYPEONLY {$$ = $1;} - | AUTOREPLY {$$ = $1;} - ; - -defn: DEFINE NAME LCURLY defbody RCURLY SEMI - {$$ = add_define($2, $4);} - - | NOVERSION SEMI - {$$ = suppress_version();} - ; - -defbody: defbody onedef {$$ = add_defbody($1, $2);} - | onedef {$$ = $1;} - ; - -onedef: PRIMTYPE vbl SEMI {$$ = add_primtype($1, $2, 0);} - | TPACKED PRIMTYPE vbl SEMI {$$ = add_primtype($1, $2, $3);} - | NAME vbl SEMI {$$ = add_complex($1, $2);} - | UNION NAME LCURLY defbody RCURLY SEMI - {$$ = add_union($2, $4);} - ; - -vbl: NAME {$$ = add_scalar_vbl($1);} - | NAME LBRACK NUMBER RBRACK {$$ = add_vector_vbl($1, $3);} - | NAME LBRACK NAME RBRACK {$$ = add_variable_length_vector_vbl($1, $3);} - ; - -api_version: VL_API_VERSION NUMBER DOT NUMBER DOT NUMBER - {$$ = add_version ($2, $4, $6);} |