annotate Tools/scripts/h2py.py @ 1590:ac2e5cc29949 legacy-trunk

Added tests for missing host to open_http and open_gopher
author Guido van Rossum <guido@python.org>
date Mon, 18 Apr 1994 09:39:56 +0000
parents 28948181fb2f
children 907c5dd89c6c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1269
28948181fb2f *** empty log message ***
Guido van Rossum <guido@python.org>
parents: 898
diff changeset
1 #! /usr/local/bin/python
687
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 # Read #define's from stdin and translate to Python code on stdout.
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 # Very primitive: non-#define's are ignored, no check for valid Python
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 # syntax is made -- you will have to edit the output in most cases.
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 # XXX To do:
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 # - accept filename arguments
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 # - turn trailing C comments into Python comments
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 # - turn C string quotes into Python comments
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 # - turn C Boolean operators "&& || !" into Python "and or not"
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 # - what to do about #if(def)?
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 # - what to do about macros with parameters?
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 # - reject definitions with semicolons in them
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 import sys, regex, string
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 p_define = regex.compile('^#[\t ]*define[\t ]+\([a-zA-Z0-9_]+\)[\t ]+')
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19
898
ef86502508e2 Fix regexp recognizing comments to cope with unterminated comments.
Guido van Rossum <guido@python.org>
parents: 687
diff changeset
20 p_comment = regex.compile('/\*\([^*]+\|\*+[^/]\)*\(\*+/\)?')
687
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 def main():
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 process(sys.stdin)
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 def process(fp):
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 lineno = 0
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 while 1:
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 line = fp.readline()
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 if not line: break
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 lineno = lineno + 1
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 if p_define.match(line) >= 0:
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 # gobble up continuation lines
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 while line[-2:] == '\\\n':
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 nextline = fp.readline()
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 if not nextline: break
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 lineno = lineno + 1
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 line = line + nextline
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 regs = p_define.regs
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 a, b = regs[1] # where the macro name is
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 name = line[a:b]
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 a, b = regs[0] # the whole match
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 body = line[b:]
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 # replace comments by spaces
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 while p_comment.search(body) >= 0:
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 a, b = p_comment.regs[0]
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 body = body[:a] + ' ' + body[b:]
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 print name, '=', string.strip(body)
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48
e15bea971a5b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 main()