107 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
| """
 | |
| GTSAM Copyright 2010-2020, Georgia Tech Research Corporation,
 | |
| Atlanta, Georgia 30332-0415
 | |
| All Rights Reserved
 | |
| 
 | |
| See LICENSE for the license information
 | |
| 
 | |
| All the token definitions.
 | |
| 
 | |
| Author: Duy Nguyen Ta, Fan Jiang, Matthew Sklar, Varun Agrawal, and Frank Dellaert
 | |
| """
 | |
| 
 | |
| from pyparsing import (Keyword, Literal, OneOrMore, Or,  # type: ignore
 | |
|                        QuotedString, Suppress, Word, alphanums, alphas,
 | |
|                        nestedExpr, nums, originalTextFor, printables)
 | |
| 
 | |
| # rule for identifiers (e.g. variable names)
 | |
| IDENT = Word(alphas + '_', alphanums + '_') ^ Word(nums)
 | |
| 
 | |
| RAW_POINTER, SHARED_POINTER, REF = map(Literal, "@*&")
 | |
| 
 | |
| LPAREN, RPAREN, LBRACE, RBRACE, COLON, SEMI_COLON = map(Suppress, "(){}:;")
 | |
| LOPBRACK, ROPBRACK, COMMA, EQUAL = map(Suppress, "<>,=")
 | |
| 
 | |
| # Default argument passed to functions/methods.
 | |
| # Allow anything up to ',' or ';' except when they
 | |
| # appear inside matched expressions such as
 | |
| # (a, b) {c, b} "hello, world", templates, initializer lists, etc.
 | |
| DEFAULT_ARG = originalTextFor(
 | |
|     OneOrMore(
 | |
|         QuotedString('"') ^  # parse double quoted strings
 | |
|         QuotedString("'") ^  # parse single quoted strings
 | |
|         Word(printables, excludeChars="(){}[]<>,;") ^  # parse arbitrary words
 | |
|         nestedExpr(opener='(', closer=')') ^  # parse expression in parentheses
 | |
|         nestedExpr(opener='[', closer=']') ^  # parse expression in brackets
 | |
|         nestedExpr(opener='{', closer='}') ^  # parse expression in braces
 | |
|         nestedExpr(opener='<', closer='>')  # parse template expressions
 | |
|     ))
 | |
| 
 | |
| CONST, VIRTUAL, CLASS, STATIC, PAIR, TEMPLATE, TYPEDEF, INCLUDE = map(
 | |
|     Keyword,
 | |
|     [
 | |
|         "const",
 | |
|         "virtual",
 | |
|         "class",
 | |
|         "static",
 | |
|         "pair",
 | |
|         "template",
 | |
|         "typedef",
 | |
|         "#include",
 | |
|     ],
 | |
| )
 | |
| ENUM = Keyword("enum") ^ Keyword("enum class") ^ Keyword("enum struct")
 | |
| NAMESPACE = Keyword("namespace")
 | |
| BASIS_TYPES = map(
 | |
|     Keyword,
 | |
|     [
 | |
|         "void",
 | |
|         "bool",
 | |
|         "unsigned char",
 | |
|         "char",
 | |
|         "int",
 | |
|         "size_t",
 | |
|         "double",
 | |
|         "float",
 | |
|     ],
 | |
| )
 | |
| 
 | |
| OPERATOR = Or(
 | |
|     map(
 | |
|         Literal,
 | |
|         [
 | |
|             '+',  # __add__, __pos__
 | |
|             '-',  # __sub__, __neg__
 | |
|             '*',  # __mul__
 | |
|             '/',  # __truediv__
 | |
|             '%',  # __mod__
 | |
|             '^',  # __xor__
 | |
|             '&',  # __and__
 | |
|             '|',  # __or__
 | |
|             # '~',  # __invert__
 | |
|             '+=',  # __iadd__
 | |
|             '-=',  # __isub__
 | |
|             '*=',  # __imul__
 | |
|             '/=',  # __itruediv__
 | |
|             '%=',  # __imod__
 | |
|             '^=',  # __ixor__
 | |
|             '&=',  # __iand__
 | |
|             '|=',  # __ior__
 | |
|             '<<',  # __lshift__
 | |
|             '<<=',  # __ilshift__
 | |
|             '>>',  # __rshift__
 | |
|             '>>=',  # __irshift__
 | |
|             '==',  # __eq__
 | |
|             '!=',  # __ne__
 | |
|             '<',  # __lt__
 | |
|             '>',  # __gt__
 | |
|             '<=',  # __le__
 | |
|             '>=',  # __ge__
 | |
|             # '!',  # Use `not` in python
 | |
|             # '&&',  # Use `and` in python
 | |
|             # '||',  # Use `or` in python
 | |
|             '()',  # __call__
 | |
|             '[]',  # __getitem__
 | |
|         ],
 | |
|     ))
 |