Index: third_party/re2/re2/make_unicode_casefold.py |
diff --git a/third_party/re2/re2/make_unicode_casefold.py b/third_party/re2/re2/make_unicode_casefold.py |
deleted file mode 100755 |
index d215eb195e4b5e2ead9236188061fcb339463e95..0000000000000000000000000000000000000000 |
--- a/third_party/re2/re2/make_unicode_casefold.py |
+++ /dev/null |
@@ -1,147 +0,0 @@ |
-#!/usr/bin/python |
-# coding=utf-8 |
-# |
-# Copyright 2008 The RE2 Authors. All Rights Reserved. |
-# Use of this source code is governed by a BSD-style |
-# license that can be found in the LICENSE file. |
- |
-# See unicode_casefold.h for description of case folding tables. |
- |
-"""Generate C++ table for Unicode case folding.""" |
- |
-import sys |
-import unicode |
- |
-_header = """ |
-// GENERATED BY make_unicode_casefold.py; DO NOT EDIT. |
-// make_unicode_casefold.py >unicode_casefold.cc |
- |
-#include "re2/unicode_casefold.h" |
- |
-namespace re2 { |
- |
-""" |
- |
-_trailer = """ |
- |
-} // namespace re2 |
- |
-""" |
- |
-def _Delta(a, b): |
- """Compute the delta for b - a. Even/odd and odd/even |
- are handled specially, as described above.""" |
- if a+1 == b: |
- if a%2 == 0: |
- return 'EvenOdd' |
- else: |
- return 'OddEven' |
- if a == b+1: |
- if a%2 == 0: |
- return 'OddEven' |
- else: |
- return 'EvenOdd' |
- return b - a |
- |
-def _AddDelta(a, delta): |
- """Return a + delta, handling EvenOdd and OddEven specially.""" |
- if type(delta) == int: |
- return a+delta |
- if delta == 'EvenOdd': |
- if a%2 == 0: |
- return a+1 |
- else: |
- return a-1 |
- if delta == 'OddEven': |
- if a%2 == 1: |
- return a+1 |
- else: |
- return a-1 |
- print >>sys.stderr, "Bad Delta: ", delta |
- raise "Bad Delta" |
- |
-def _MakeRanges(pairs): |
- """Turn a list like [(65,97), (66, 98), ..., (90,122)] |
- into [(65, 90, +32)].""" |
- ranges = [] |
- last = -100 |
- |
- def evenodd(last, a, b, r): |
- if a != last+1 or b != _AddDelta(a, r[2]): |
- return False |
- r[1] = a |
- return True |
- |
- def evenoddpair(last, a, b, r): |
- if a != last+2: |
- return False |
- delta = r[2] |
- d = delta |
- if type(delta) is not str: |
- return False |
- if delta.endswith('Skip'): |
- d = delta[:-4] |
- else: |
- delta = d + 'Skip' |
- if b != _AddDelta(a, d): |
- return False |
- r[1] = a |
- r[2] = delta |
- return True |
- |
- for a, b in pairs: |
- if ranges and evenodd(last, a, b, ranges[-1]): |
- pass |
- elif ranges and evenoddpair(last, a, b, ranges[-1]): |
- pass |
- else: |
- ranges.append([a, a, _Delta(a, b)]) |
- last = a |
- return ranges |
- |
-# The maximum size of a case-folding group. |
-# Case folding is implemented in parse.cc by a recursive process |
-# with a recursion depth equal to the size of the largest |
-# case-folding group, so it is important that this bound be small. |
-# The current tables have no group bigger than 4. |
-# If there are ever groups bigger than 10 or so, it will be |
-# time to rework the code in parse.cc. |
-MaxCasefoldGroup = 4 |
- |
-def main(): |
- lowergroups, casegroups = unicode.CaseGroups() |
- foldpairs = [] |
- seen = {} |
- for c in casegroups: |
- if len(c) > MaxCasefoldGroup: |
- raise unicode.Error("casefold group too long: %s" % (c,)) |
- for i in range(len(c)): |
- if c[i-1] in seen: |
- raise unicode.Error("bad casegroups %d -> %d" % (c[i-1], c[i])) |
- seen[c[i-1]] = True |
- foldpairs.append([c[i-1], c[i]]) |
- |
- lowerpairs = [] |
- for lower, group in lowergroups.iteritems(): |
- for g in group: |
- if g != lower: |
- lowerpairs.append([g, lower]) |
- |
- def printpairs(name, foldpairs): |
- foldpairs.sort() |
- foldranges = _MakeRanges(foldpairs) |
- print "// %d groups, %d pairs, %d ranges" % (len(casegroups), len(foldpairs), len(foldranges)) |
- print "const CaseFold unicode_%s[] = {" % (name,) |
- for lo, hi, delta in foldranges: |
- print "\t{ %d, %d, %s }," % (lo, hi, delta) |
- print "};" |
- print "const int num_unicode_%s = %d;" % (name, len(foldranges),) |
- print "" |
- |
- print _header |
- printpairs("casefold", foldpairs) |
- printpairs("tolower", lowerpairs) |
- print _trailer |
- |
-if __name__ == '__main__': |
- main() |