symbian-qemu-0.9.1-12/python-2.6.1/Demo/comparisons/regextest.py
changeset 1 2fb8b9db1c86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/python-2.6.1/Demo/comparisons/regextest.py	Fri Jul 31 15:01:17 2009 +0100
@@ -0,0 +1,47 @@
+#! /usr/bin/env python
+
+# 1)  Regular Expressions Test
+#
+#     Read a file of (extended per egrep) regular expressions (one per line),
+#     and apply those to all files whose names are listed on the command line.
+#     Basically, an 'egrep -f' simulator.  Test it with 20 "vt100" patterns
+#     against a five /etc/termcap files.  Tests using more elaborate patters
+#     would also be interesting.  Your code should not break if given hundreds
+#     of regular expressions or binary files to scan.
+
+# This implementation:
+# - combines all patterns into a single one using ( ... | ... | ... )
+# - reads patterns from stdin, scans files given as command line arguments
+# - produces output in the format <file>:<lineno>:<line>
+# - is only about 2.5 times as slow as egrep (though I couldn't run
+#   Tom's test -- this system, a vanilla SGI, only has /etc/terminfo)
+
+import string
+import sys
+import re
+
+def main():
+    pats = map(chomp, sys.stdin.readlines())
+    bigpat = '(' + '|'.join(pats) + ')'
+    prog = re.compile(bigpat)
+
+    for file in sys.argv[1:]:
+        try:
+            fp = open(file, 'r')
+        except IOError, msg:
+            print "%s: %s" % (file, msg)
+            continue
+        lineno = 0
+        while 1:
+            line = fp.readline()
+            if not line:
+                break
+            lineno = lineno + 1
+            if prog.search(line):
+                print "%s:%s:%s" % (file, lineno, line),
+
+def chomp(s):
+    return s.rstrip('\n')
+
+if __name__ == '__main__':
+    main()