Vega strike Python Modules doc  0.5.1
Documentation of the " Modules " folder of Vega strike
 All Data Structures Namespaces Files Functions Variables
sre_parse Namespace Reference

Data Structures

class  Pattern
 
class  SubPattern
 
class  Tokenizer
 

Functions

def isident
 
def isdigit
 
def isname
 
def parse
 
def parse_template
 
def expand_template
 

Variables

string SPECIAL_CHARS = ".\\[{()*+?^$|"
 
string REPEAT_CHARS = "*+?{"
 
tuple DIGITS = tuple("0123456789")
 
tuple OCTDIGITS = tuple("01234567")
 
tuple HEXDIGITS = tuple("0123456789abcdefABCDEF")
 
tuple WHITESPACE = tuple(" \t\n\r\v\f")
 
dictionary ESCAPES
 
dictionary CATEGORIES
 
dictionary FLAGS
 
 atoi = int
 
list start = set[:]
 if source.match(":"): pass # handle character classes More...
 
tuple this = source.get()
 
tuple code1 = _class_escape(source, this)
 
tuple code2 = _class_escape(source, this)
 
list lo = code1[1]
 
list hi = code2[1]
 
tuple here = source.tell()
 
tuple min = atoi(lo)
 
tuple max = atoi(hi)
 
list item = subpattern[-1:]
 
int group = 1
 
 name = None
 
tuple char = source.get()
 
tuple gid = state.groupdict.get(name)
 
int dir = 1
 
tuple p = _parse_sub(source, state)
 
tuple code = _escape(source, this, state)
 

Function Documentation

def sre_parse.expand_template (   template,
  match 
)

Definition at line 726 of file sre_parse.py.

References aifc.g, and string.join().

727 def expand_template(template, match):
728  g = match.group
729  sep = match.string[:0]
730  groups, literals = template
731  literals = literals[:]
732  try:
733  for index, group in groups:
734  literals[index] = s = g(group)
735  if s is None:
736  raise IndexError
737  except IndexError:
738  raise error, "empty group"
739  return string.join(literals, sep)
def sre_parse.isdigit (   char)

Definition at line 218 of file sre_parse.py.

219 def isdigit(char):
220  return "0" <= char <= "9"
def sre_parse.isident (   char)

Definition at line 215 of file sre_parse.py.

216 def isident(char):
217  return "a" <= char <= "z" or "A" <= char <= "Z" or char == "_"
def sre_parse.isname (   name)

Definition at line 221 of file sre_parse.py.

References atoi, isdigit(), isident(), and locale.str().

222 def isname(name):
223  # check that group name is a valid string
224  if not isident(name[0]):
225  return 0
226  for char in name:
227  if not isident(char) and not isdigit(char):
228  return 0
229  return 1
def sre_parse.parse (   str,
  flags = 0,
  pattern = None 
)

Definition at line 613 of file sre_parse.py.

614 def parse(str, flags=0, pattern=None):
615  # parse 're' pattern into list of (opcode, argument) tuples
616 
617  source = Tokenizer(str)
618 
619  if pattern is None:
620  pattern = Pattern()
621  pattern.flags = flags
622  pattern.str = str
623 
624  p = _parse_sub(source, pattern, 0)
625 
626  tail = source.get()
627  if tail == ")":
628  raise error, "unbalanced parenthesis"
629  elif tail:
630  raise error, "bogus characters at end of regular expression"
631 
632  if flags & SRE_FLAG_DEBUG:
633  p.dump()
634 
635  if not (flags & SRE_FLAG_VERBOSE) and p.pattern.flags & SRE_FLAG_VERBOSE:
636  # the VERBOSE flag was switched on inside the pattern. to be
637  # on the safe side, we'll parse the whole thing again...
638  return parse(str, p.pattern.flags)
639 
640  return p
def sre_parse.parse_template (   source,
  pattern 
)

Definition at line 641 of file sre_parse.py.

References copy.a, atoi, and isname().

642 def parse_template(source, pattern):
643  # parse 're' replacement string into list of literals and
644  # group references
645  s = Tokenizer(source)
646  p = []
647  a = p.append
648  def literal(literal, p=p):
649  if p and p[-1][0] is LITERAL:
650  p[-1] = LITERAL, p[-1][1] + literal
651  else:
652  p.append((LITERAL, literal))
653  sep = source[:0]
654  if type(sep) is type(""):
655  makechar = chr
656  else:
657  makechar = unichr
658  while 1:
659  this = s.get()
660  if this is None:
661  break # end of replacement string
662  if this and this[0] == "\\":
663  # group
664  if this == "\\g":
665  name = ""
666  if s.match("<"):
667  while 1:
668  char = s.get()
669  if char is None:
670  raise error, "unterminated group name"
671  if char == ">":
672  break
673  name = name + char
674  if not name:
675  raise error, "bad group name"
676  try:
677  index = atoi(name)
678  except ValueError:
679  if not isname(name):
680  raise error, "bad character in group name"
681  try:
682  index = pattern.groupindex[name]
683  except KeyError:
684  raise IndexError, "unknown group name"
685  a((MARK, index))
686  elif len(this) > 1 and this[1] in DIGITS:
687  code = None
688  while 1:
689  group = _group(this, pattern.groups+1)
690  if group:
691  if (s.next not in DIGITS or
692  not _group(this + s.next, pattern.groups+1)):
693  code = MARK, group
694  break
695  elif s.next in OCTDIGITS:
696  this = this + s.get()
697  else:
698  break
699  if not code:
700  this = this[1:]
701  code = LITERAL, makechar(atoi(this[-6:], 8) & 0xff)
702  if code[0] is LITERAL:
703  literal(code[1])
704  else:
705  a(code)
706  else:
707  try:
708  this = makechar(ESCAPES[this][1])
709  except KeyError:
710  pass
711  literal(this)
712  else:
713  literal(this)
714  # convert template to groups and literals lists
715  i = 0
716  groups = []
717  literals = []
718  for c, s in p:
719  if c is MARK:
720  groups.append((i, s))
721  literals.append(None)
722  else:
723  literals.append(s)
724  i = i + 1
725  return groups, literals

Variable Documentation

atoi = int

Definition at line 69 of file sre_parse.py.

dictionary CATEGORIES
Initial value:
1 = {
2  r"\A": (AT, AT_BEGINNING_STRING), # start of string
3  r"\b": (AT, AT_BOUNDARY),
4  r"\B": (AT, AT_NON_BOUNDARY),
5  r"\d": (IN, [(CATEGORY, CATEGORY_DIGIT)]),
6  r"\D": (IN, [(CATEGORY, CATEGORY_NOT_DIGIT)]),
7  r"\s": (IN, [(CATEGORY, CATEGORY_SPACE)]),
8  r"\S": (IN, [(CATEGORY, CATEGORY_NOT_SPACE)]),
9  r"\w": (IN, [(CATEGORY, CATEGORY_WORD)]),
10  r"\W": (IN, [(CATEGORY, CATEGORY_NOT_WORD)]),
11  r"\Z": (AT, AT_END_STRING), # end of string
12 }

Definition at line 41 of file sre_parse.py.

tuple char = source.get()

Definition at line 510 of file sre_parse.py.

tuple code = _escape(source, this, state)

Definition at line 605 of file sre_parse.py.

list code1 = _class_escape(source, this)

Definition at line 409 of file sre_parse.py.

tuple code2 = _class_escape(source, this)

Definition at line 425 of file sre_parse.py.

tuple DIGITS = tuple("0123456789")

Definition at line 23 of file sre_parse.py.

int dir = 1

Definition at line 556 of file sre_parse.py.

dictionary ESCAPES
Initial value:
1 = {
2  r"\a": (LITERAL, ord("\a")),
3  r"\b": (LITERAL, ord("\b")),
4  r"\f": (LITERAL, ord("\f")),
5  r"\n": (LITERAL, ord("\n")),
6  r"\r": (LITERAL, ord("\r")),
7  r"\t": (LITERAL, ord("\t")),
8  r"\v": (LITERAL, ord("\v")),
9  r"\\": (LITERAL, ord("\\"))
10 }

Definition at line 30 of file sre_parse.py.

dictionary FLAGS
Initial value:
1 = {
2  # standard flags
3  "i": SRE_FLAG_IGNORECASE,
4  "L": SRE_FLAG_LOCALE,
5  "m": SRE_FLAG_MULTILINE,
6  "s": SRE_FLAG_DOTALL,
7  "x": SRE_FLAG_VERBOSE,
8  # extensions
9  "t": SRE_FLAG_TEMPLATE,
10  "u": SRE_FLAG_UNICODE,
11 }

Definition at line 54 of file sre_parse.py.

tuple gid = state.groupdict.get(name)

Definition at line 531 of file sre_parse.py.

tuple group = 1

Definition at line 499 of file sre_parse.py.

tuple here = source.tell()

Definition at line 459 of file sre_parse.py.

tuple HEXDIGITS = tuple("0123456789abcdefABCDEF")

Definition at line 26 of file sre_parse.py.

tuple hi = code2[1]

Definition at line 431 of file sre_parse.py.

item = subpattern[-1:]

Definition at line 483 of file sre_parse.py.

tuple lo = code1[1]

Definition at line 430 of file sre_parse.py.

tuple max = atoi(hi)

Definition at line 476 of file sre_parse.py.

tuple min = atoi(lo)

Definition at line 474 of file sre_parse.py.

string name = None

Definition at line 500 of file sre_parse.py.

tuple OCTDIGITS = tuple("01234567")

Definition at line 25 of file sre_parse.py.

tuple p = _parse_sub(source, state)

Definition at line 562 of file sre_parse.py.

string REPEAT_CHARS = "*+?{"

Definition at line 21 of file sre_parse.py.

string SPECIAL_CHARS = ".\\[{()*+?^$|"

Definition at line 20 of file sre_parse.py.

list start = set[:]

if source.match(":"): pass # handle character classes

Definition at line 403 of file sre_parse.py.

tuple this = source.get()

Definition at line 405 of file sre_parse.py.

tuple WHITESPACE = tuple(" \t\n\r\v\f")

Definition at line 28 of file sre_parse.py.