Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
09336f9f
Commit
09336f9f
authored
May 03, 1994
by
Guido van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Process command line arguments; skip #defines that generate invalid
Python
parent
ef5bca38
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
7 deletions
+36
-7
Tools/scripts/h2py.py
Tools/scripts/h2py.py
+36
-7
No files found.
Tools/scripts/h2py.py
View file @
09336f9f
#! /usr/local/bin/python
# Read #define's from stdin and translate to Python code on stdout.
# Very primitive: non-#define's are ignored, no check for valid Python
# syntax is made -- you will have to edit the output in most cases.
# Very primitive: non-#define's are ignored.
# You will have to edit the output in some cases.
# If one or more filenames are given, output is written to corresponding
# filenames in the local directory, translated to all uppercase, with
# the extension replaced by ".py".
# XXX To do:
# - accept filename arguments
# - turn trailing C comments into Python comments
# - turn C string quotes into Python comments
# - turn C Boolean operators "&& || !" into Python "and or not"
...
...
@@ -13,16 +15,35 @@
# - what to do about macros with parameters?
# - reject definitions with semicolons in them
import
sys
,
regex
,
string
import
sys
,
regex
,
string
,
getopt
,
os
p_define
=
regex
.
compile
(
'^#[
\
t
]*define[
\
t
]+
\
([
a
-zA-Z0-9_]+
\
)[
\
t ]+'
)
p_comment
=
regex
.
compile
(
'/
\
*
\
([^*]+
\
|
\
*+[^/]
\
)*
\
(
\
*+/
\
)?'
)
def
main
():
process
(
sys
.
stdin
)
opts
,
args
=
getopt
.
getopt
(
sys
.
argv
[
1
:],
''
)
if
not
args
:
args
=
[
'-'
]
for
filename
in
args
:
if
filename
==
'-'
:
sys
.
stdout
.
write
(
'# Generated by h2py from stdin
\
n
'
)
process
(
sys
.
stdin
,
sys
.
stdout
)
else
:
fp
=
open
(
filename
,
'r'
)
outfile
=
os
.
path
.
basename
(
filename
)
i
=
string
.
rfind
(
outfile
,
'.'
)
if
i
>
0
:
outfile
=
outfile
[:
i
]
outfile
=
string
.
upper
(
outfile
)
outfile
=
outfile
+
'.py'
outfp
=
open
(
outfile
,
'w'
)
outfp
.
write
(
'# Generated by h2py from %s
\
n
'
%
filename
)
process
(
fp
,
outfp
)
outfp
.
close
()
fp
.
close
()
def
process
(
fp
):
def
process
(
fp
,
outfp
):
env
=
{}
lineno
=
0
while
1
:
line
=
fp
.
readline
()
...
...
@@ -44,6 +65,14 @@ def process(fp):
while
p_comment
.
search
(
body
)
>=
0
:
a
,
b
=
p_comment
.
regs
[
0
]
body
=
body
[:
a
]
+
' '
+
body
[
b
:]
print
name
,
'='
,
string
.
strip
(
body
)
stmt
=
'%s = %s
\
n
'
%
(
name
,
string
.
strip
(
body
))
ok
=
0
try
:
exec
stmt
in
env
ok
=
1
except
:
sys
.
stderr
.
write
(
'Skipping: %s'
%
stmt
)
if
ok
:
outfp
.
write
(
stmt
)
main
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment