def _integer(self): integer = self._hexadecimal_as_string() | self._decimal_as_string() # Python does not care about suffixes so we just drop them. possible_suffix = pyparsing.Literal( 'u') | 'U' | 'll' | 'LL' | 'l' | 'L' maybe_suffix = (pyparsing.ZeroOrMore(possible_suffix)).suppress() return (integer + maybe_suffix).setParseAction( util.action(lambda x: int(x, base=0)))
def _string_literal(self): return (pyparsing.dblQuotedString.copy()).setParseAction( util.action(c_ast.CLiteral))
def _number(self): return self._integer().addParseAction(util.action(c_ast.CNumber))
def _nested_expression(self): return (pyparsing.Literal('(') + self.expression + pyparsing.Literal(')')).setParseAction( util.action(c_ast.CNestedExpression))
def _variable(self): return (self._identifier()).addParseAction(util.action( c_ast.CVariable))
def _argument_with_dots(self): return (self._identifier_with_dots()).setParseAction( util.action(c_ast.CLiteral))
def _multiword_argument(self): return pyparsing.Group( self._variable() + pyparsing.OneOrMore(self._variable())).setParseAction( util.action(pre_ast.CompositeBlock))
def _function_call(self): return (~_TYPE_PROPERTY_KEYWORD + self._identifier() + _OPEN_PARENTHESIS + self._arguments() + _CLOSE_PARENTHESIS).setParseAction( util.action(c_ast.CFunctionCall))
def _natural(self): return pyparsing.Word(pyparsing.nums).setParseAction(util.action(int))