def regexes(self, ast, *args): pattern = ''.join(ast) try: re.compile(pattern, RE_FLAGS) except (TypeError, re.error) as e: raise FailedSemantics('regexp error: ' + str(e)) return ast
def regex(self, ast, *args): pattern = ast try: re.compile(pattern, RE_FLAGS) except (TypeError, re.error) as e: raise FailedSemantics('regexp error: ' + str(e)) return pattern
def pattern(self, ast, *args): pattern = ast try: re.compile(pattern, RE_FLAGS) except (TypeError, re.error) as e: raise FailedSemantics('regexp error: ' + str(e)) return grammars.Pattern(pattern)
def __init__( self, whitespace=re.compile('((?!^)(?![\\r\\n])\\s)+', RE_FLAGS | re.DOTALL), nameguard=None, comments_re=None, eol_comments_re='#[^\\r\\n]*', ignorecase=None, left_recursion=False, parseinfo=True, keywords=None, namechars='', buffer_class=PythonBuffer, **kwargs ): if keywords is None: keywords = KEYWORDS super(PythonParser, self).__init__( whitespace=whitespace, nameguard=nameguard, comments_re=comments_re, eol_comments_re=eol_comments_re, ignorecase=ignorecase, left_recursion=left_recursion, parseinfo=parseinfo, keywords=keywords, namechars=namechars, buffer_class=buffer_class, **kwargs )
def main( filename, startrule, trace=False, whitespace=None, nameguard=None, comments_re='/\\*[\\s\\S]*?\\*/', eol_comments_re='--.*?$', ignorecase=True, left_recursion=True, **kwargs): with open(filename) as f: text = f.read() whitespace = whitespace or re.compile('\\s+', RE_FLAGS | re.DOTALL) parser = SqlParser(parseinfo=False) ast = parser.parse( text, startrule, filename=filename, trace=trace, whitespace=whitespace, nameguard=nameguard, ignorecase=ignorecase, **kwargs) return ast
def __init__(self, whitespace=re.compile('[\\t ]+', RE_FLAGS | re.DOTALL), nameguard=None, comments_re=None, eol_comments_re=None, ignorecase=None, left_recursion=False, parseinfo=True, keywords=None, namechars='', buffer_class=GnomicBuffer, **kwargs): if keywords is None: keywords = KEYWORDS super(GnomicParser, self).__init__(whitespace=whitespace, nameguard=nameguard, comments_re=comments_re, eol_comments_re=eol_comments_re, ignorecase=ignorecase, left_recursion=left_recursion, parseinfo=parseinfo, keywords=keywords, namechars=namechars, buffer_class=buffer_class, **kwargs)
def __init__(self, whitespace=re.compile('[\\t\\n\\s]+', RE_FLAGS | re.DOTALL), nameguard=False, comments_re='\\/\\*(.|\\s|\\n)*?\\*\\/', eol_comments_re='\\/\\/.*?$', ignorecase=None, left_recursion=False, parseinfo=True, keywords=None, namechars='', buffer_class=CropBuffer, **kwargs): if keywords is None: keywords = KEYWORDS super(CropParser, self).__init__(whitespace=whitespace, nameguard=nameguard, comments_re=comments_re, eol_comments_re=eol_comments_re, ignorecase=ignorecase, left_recursion=left_recursion, parseinfo=parseinfo, keywords=keywords, namechars=namechars, buffer_class=buffer_class, **kwargs)
def _scanre(self, pattern, ignorecase=None, offset=0): ignorecase = ignorecase if ignorecase is not None else self.ignorecase if isinstance(pattern, RETYPE): re = pattern elif pattern in self._re_cache: re = self._re_cache[pattern] else: flags = RE_FLAGS | (regexp.IGNORECASE if ignorecase else 0) re = regexp.compile(pattern, flags) self._re_cache[pattern] = re return re.match(self.text, self.pos + offset)
def parse(self, text, rule_name=None, start=None, filename=None, semantics=None, trace=False, context=None, whitespace=None, left_recursion=None, comments_re=None, eol_comments_re=None, parseinfo=None, **kwargs): start = start if start is not None else rule_name start = start if start is not None else self.rules[0].name ctx = context or ModelContext( self.rules, trace=trace, keywords=self.keywords, **kwargs) if whitespace is None: whitespace = self.whitespace if whitespace: whitespace = re.compile(whitespace) if left_recursion is None: left_recursion = self.left_recursion if parseinfo is None: parseinfo = self._use_parseinfo if comments_re is None: comments_re = self.comments_re if eol_comments_re is None: eol_comments_re = self.eol_comments_re return ctx.parse( text, rule_name=start, filename=filename, semantics=semantics, trace=trace, whitespace=whitespace, comments_re=comments_re, eol_comments_re=eol_comments_re, left_recursion=left_recursion, parseinfo=parseinfo, **kwargs )
def build_whitespace_re(whitespace): if whitespace is None: return WHITESPACE_RE elif isinstance(whitespace, RETYPE): return whitespace elif whitespace: if not isinstance(whitespace, strtype): # a list or a set? whitespace = ''.join(c for c in whitespace) return regexp.compile('[%s]+' % regexp.escape(whitespace), RE_FLAGS) else: return None
def build_whitespace_re(whitespace): if whitespace is None: return WHITESPACE_RE elif isinstance(whitespace, RETYPE): return whitespace elif whitespace: if not isinstance(whitespace, strtype): # a list or a set? whitespace = ''.join(c for c in whitespace) return regexp.compile( '[%s]+' % regexp.escape(whitespace), RE_FLAGS ) else: return None
def __init__(self, whitespace=re.compile('[\\t ]+', RE_FLAGS | re.DOTALL), nameguard=None, comments_re='{\\-.*?\\-}', eol_comments_re=None, ignorecase=None, left_recursion=True, **kwargs): super(grammerParser, self).__init__(whitespace=whitespace, nameguard=nameguard, comments_re=comments_re, eol_comments_re=eol_comments_re, ignorecase=ignorecase, left_recursion=left_recursion, **kwargs)
def _scanre(self, pattern, ignorecase=None, offset=0): ignorecase = ignorecase if ignorecase is not None else self.ignorecase if isinstance(pattern, RETYPE): re = pattern elif pattern in self._re_cache: re = self._re_cache[pattern] else: flags = RE_FLAGS | (regexp.IGNORECASE if ignorecase else 0) re = regexp.compile( pattern, flags ) self._re_cache[pattern] = re return re.match(self.text, self.pos + offset)
def parse(self, text, rule_name=None, start=None, filename=None, semantics=None, trace=False, context=None, whitespace=None, left_recursion=None, comments_re=None, eol_comments_re=None, parseinfo=None, **kwargs): start = start if start is not None else rule_name start = start if start is not None else self.rules[0].name ctx = context or ModelContext( self.rules, trace=trace, keywords=self.keywords, **kwargs) if whitespace is None: whitespace = self.whitespace if whitespace: whitespace = re.compile(whitespace) if left_recursion is None: left_recursion = self.left_recursion if parseinfo is None: parseinfo = self._use_parseinfo if comments_re is None: comments_re = self.comments_re if eol_comments_re is None: eol_comments_re = self.eol_comments_re return ctx.parse(text, rule_name=start, filename=filename, semantics=semantics, trace=trace, whitespace=whitespace, comments_re=comments_re, eol_comments_re=eol_comments_re, left_recursion=left_recursion, parseinfo=parseinfo, **kwargs)
def __init__(self, text, whitespace=re.compile('\\s+', RE_FLAGS | re.DOTALL), nameguard=None, comments_re='/\\*[\\s\\S]*?\\*/', eol_comments_re='--.*?$', ignorecase=True, namechars='', **kwargs): super(SqlBuffer, self).__init__(text, whitespace=whitespace, nameguard=nameguard, comments_re=comments_re, eol_comments_re=eol_comments_re, ignorecase=ignorecase, namechars=namechars, **kwargs)
def __init__(self, whitespace=re.compile('[\\t ]+', RE_FLAGS | re.DOTALL), nameguard=None, comments_re='{\\-.*?\\-}', eol_comments_re=None, ignorecase=None, left_recursion=True, **kwargs): super(grammerParser, self).__init__( whitespace=whitespace, nameguard=nameguard, comments_re=comments_re, eol_comments_re=eol_comments_re, ignorecase=ignorecase, left_recursion=left_recursion, **kwargs )
def __init__(self, text, whitespace=re.compile('[\\t\\n\\s]+', RE_FLAGS | re.DOTALL), nameguard=False, comments_re='\\/\\*(.|\\s|\\n)*?\\*\\/', eol_comments_re='\\/\\/.*?$', ignorecase=None, namechars='', **kwargs): super(CropBuffer, self).__init__(text, whitespace=whitespace, nameguard=nameguard, comments_re=comments_re, eol_comments_re=eol_comments_re, ignorecase=ignorecase, namechars=namechars, **kwargs)
def __init__(self, text, whitespace=re.compile('[\\t ]+', RE_FLAGS | re.DOTALL), nameguard=None, comments_re=None, eol_comments_re=None, ignorecase=None, namechars='', **kwargs): super(GnomicBuffer, self).__init__(text, whitespace=whitespace, nameguard=nameguard, comments_re=comments_re, eol_comments_re=eol_comments_re, ignorecase=ignorecase, namechars=namechars, **kwargs)
def __init__(self, text, whitespace=re.compile('((?!^)(?![\\r\\n])\\s)+', RE_FLAGS | re.DOTALL), nameguard=None, comments_re=None, eol_comments_re='#[^\\r\\n]*', ignorecase=None, namechars='', **kwargs): super(PythonBuffer, self).__init__(text, whitespace=whitespace, nameguard=nameguard, comments_re=comments_re, eol_comments_re=eol_comments_re, ignorecase=ignorecase, namechars=namechars, **kwargs)
def parse(self, text, start=None, filename=None, semantics=None, trace=False, context=None, whitespace=None, left_recursion=None, comments_re=None, eol_comments_re=None, **kwargs): ctx = context or ModelContext( self.rules, trace=trace, keywords=self.keywords, **kwargs) if whitespace is None: whitespace = self.whitespace if whitespace: whitespace = re.compile(whitespace) if left_recursion is None: left_recursion = self.left_recursion if comments_re is None: comments_re = self.comments_re if eol_comments_re is None: eol_comments_re = self.eol_comments_re return ctx.parse( text, start or self.rules[0].name, filename=filename, semantics=semantics, trace=trace, whitespace=whitespace, comments_re=comments_re, eol_comments_re=eol_comments_re, left_recursion=left_recursion, **kwargs )
def __init__(self, whitespace=re.compile('\\s+', RE_FLAGS | re.DOTALL), nameguard=None, comments_re='/\\*[\\s\\S]*?\\*/', eol_comments_re='--.*?$', ignorecase=True, left_recursion=True, keywords=KEYWORDS, namechars='', **kwargs): super(SqlParser, self).__init__(whitespace=whitespace, nameguard=nameguard, comments_re=comments_re, eol_comments_re=eol_comments_re, ignorecase=ignorecase, left_recursion=left_recursion, keywords=keywords, namechars=namechars, **kwargs)
def __init__(self, text, whitespace=re.compile('\\s+', RE_FLAGS | re.DOTALL), nameguard=None, comments_re='/\\*[\\s\\S]*?\\*/', eol_comments_re='--.*?$', ignorecase=True, namechars='', **kwargs): super(SqlBuffer, self).__init__( text, whitespace=whitespace, nameguard=nameguard, comments_re=comments_re, eol_comments_re=eol_comments_re, ignorecase=ignorecase, namechars=namechars, **kwargs )
def __init__( self, text, whitespace=re.compile('((?!^)(?![\\r\\n])\\s)+', RE_FLAGS | re.DOTALL), nameguard=None, comments_re=None, eol_comments_re='#[^\\r\\n]*', ignorecase=None, namechars='', **kwargs ): super(PythonBuffer, self).__init__( text, whitespace=whitespace, nameguard=nameguard, comments_re=comments_re, eol_comments_re=eol_comments_re, ignorecase=ignorecase, namechars=namechars, **kwargs )
def __init__(self, whitespace=re.compile('\\s+', RE_FLAGS | re.DOTALL), nameguard=None, comments_re='/\\*[\\s\\S]*?\\*/', eol_comments_re='--.*?$', ignorecase=True, left_recursion=True, keywords=KEYWORDS, namechars='', **kwargs): super(SqlParser, self).__init__( whitespace=whitespace, nameguard=nameguard, comments_re=comments_re, eol_comments_re=eol_comments_re, ignorecase=ignorecase, left_recursion=left_recursion, keywords=keywords, namechars=namechars, **kwargs )
def parse(self, text, start=None, filename=None, semantics=None, trace=False, context=None, whitespace=None, left_recursion=None, comments_re=None, eol_comments_re=None, **kwargs): ctx = context or ModelContext( self.rules, trace=trace, keywords=self.keywords, **kwargs) if whitespace is None: whitespace = self.whitespace if whitespace: whitespace = re.compile(whitespace) if left_recursion is None: left_recursion = self.left_recursion if comments_re is None: comments_re = self.comments_re if eol_comments_re is None: eol_comments_re = self.eol_comments_re return ctx.parse(text, start or self.rules[0].name, filename=filename, semantics=semantics, trace=trace, whitespace=whitespace, comments_re=comments_re, eol_comments_re=eol_comments_re, left_recursion=left_recursion, **kwargs)
def main(filename, startrule, trace=False, whitespace=None, nameguard=None, comments_re='/\\*[\\s\\S]*?\\*/', eol_comments_re='--.*?$', ignorecase=True, left_recursion=True, **kwargs): with open(filename) as f: text = f.read() whitespace = whitespace or re.compile('\\s+', RE_FLAGS | re.DOTALL) parser = SqlParser(parseinfo=False) ast = parser.parse(text, startrule, filename=filename, trace=trace, whitespace=whitespace, nameguard=nameguard, ignorecase=ignorecase, **kwargs) return ast
def __postinit__(self, ast): super(Pattern, self).__postinit__(ast) if not isinstance(ast, list): ast = [ast] self.patterns = ast re.compile(self.pattern, RE_FLAGS)
def __postinit__(self, ast): super(Pattern, self).__postinit__(ast) if not isinstance(ast, list): ast = [ast] self.patterns = ast re.compile(self.pattern, RE_FLAGS)
def __postinit__(self, ast): re.compile(ast, RE_FLAGS) super(Pattern, self).__postinit__(ast) self.pattern = ast
def __postinit__(self, ast): re.compile(ast, RE_FLAGS) super(Pattern, self).__postinit__(ast) self.pattern = ast
""" from __future__ import (absolute_import, division, print_function, unicode_literals) import os from bisect import bisect_left from collections import namedtuple from grako.util import ustr, strtype, re as regexp, WHITESPACE_RE, RE_FLAGS from grako.exceptions import ParseError # TODO: There could be a file buffer using random access __all__ = ['Buffer'] RETYPE = type(regexp.compile('.')) PosLine = namedtuple('PosLine', ['pos', 'line']) LineInfo = namedtuple( 'LineInfo', ['filename', 'line', 'col', 'start', 'end', 'text'] ) class Buffer(object): def __init__(self, text, filename=None,