57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
"""
|
|
GTSAM Copyright 2010-2020, Georgia Tech Research Corporation,
|
|
Atlanta, Georgia 30332-0415
|
|
All Rights Reserved
|
|
|
|
See LICENSE for the license information
|
|
|
|
Rules and classes for parsing a module.
|
|
|
|
Author: Duy Nguyen Ta, Fan Jiang, Matthew Sklar, Varun Agrawal, and Frank Dellaert
|
|
"""
|
|
|
|
# pylint: disable=unnecessary-lambda, unused-import, expression-not-assigned, no-else-return, protected-access, too-few-public-methods, too-many-arguments
|
|
|
|
from pyparsing import (ParseResults, ZeroOrMore, # type: ignore
|
|
cppStyleComment, stringEnd)
|
|
|
|
from .classes import Class
|
|
from .declaration import ForwardDeclaration, Include
|
|
from .enum import Enum
|
|
from .function import GlobalFunction
|
|
from .namespace import Namespace
|
|
from .template import TypedefTemplateInstantiation
|
|
from .variable import Variable
|
|
|
|
|
|
class Module:
|
|
"""
|
|
Module is just a global namespace.
|
|
|
|
E.g.
|
|
```
|
|
namespace gtsam {
|
|
...
|
|
}
|
|
```
|
|
"""
|
|
|
|
rule = (
|
|
ZeroOrMore(ForwardDeclaration.rule #
|
|
^ Include.rule #
|
|
^ Class.rule #
|
|
^ TypedefTemplateInstantiation.rule #
|
|
^ GlobalFunction.rule #
|
|
^ Enum.rule #
|
|
^ Variable.rule #
|
|
^ Namespace.rule #
|
|
).setParseAction(lambda t: Namespace('', t.asList())) +
|
|
stringEnd)
|
|
|
|
rule.ignore(cppStyleComment)
|
|
|
|
@staticmethod
|
|
def parseString(s: str) -> ParseResults:
|
|
"""Parse the source string and apply the rules."""
|
|
return Module.rule.parseString(s)[0]
|