diff options
Diffstat (limited to 'src/tools')
-rwxr-xr-x | src/tools/vppapigen/test_vppapigen.py | 10 | ||||
-rwxr-xr-x | src/tools/vppapigen/vppapigen.py | 10 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/tools/vppapigen/test_vppapigen.py b/src/tools/vppapigen/test_vppapigen.py index a8e52637d48..999addfccd2 100755 --- a/src/tools/vppapigen/test_vppapigen.py +++ b/src/tools/vppapigen/test_vppapigen.py @@ -124,6 +124,16 @@ class TestDefine(unittest.TestCase): with self.assertRaises(ParseError): self.parser.parse_string(test_string) + def test_options(self): + test_string = ''' + define foo { option deprecated; u8 foo; }; + define foo_reply {u32 context; i32 retval; }; + ''' + r = self.parser.parse_string(test_string) + self.assertIsNotNone(r) + s = self.parser.process(r) + self.assertIsNotNone(s) + class TestService(unittest.TestCase): @classmethod diff --git a/src/tools/vppapigen/vppapigen.py b/src/tools/vppapigen/vppapigen.py index 8b6297e728d..e571f26a5ac 100755 --- a/src/tools/vppapigen/vppapigen.py +++ b/src/tools/vppapigen/vppapigen.py @@ -350,7 +350,7 @@ class Import(): class Option(): - def __init__(self, option, value): + def __init__(self, option, value=None): self.type = 'Option' self.option = option self.value = value @@ -686,8 +686,12 @@ class VPPAPIParser(object): p[0] = Array(p[1], p[2], p[4]) def p_option(self, p): - '''option : OPTION ID '=' assignee ';' ''' - p[0] = Option(p[2], p[4]) + '''option : OPTION ID '=' assignee ';' + | OPTION ID ';' ''' + if len(p) == 4: + p[0] = Option(p[2]) + else: + p[0] = Option(p[2], p[4]) def p_assignee(self, p): '''assignee : NUM |