Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
5bb7d991
Commit
5bb7d991
authored
Apr 13, 2014
by
Damien George
Browse files
py: Modify makeqstrdata to recognise better the output of CPP.
parent
49f20b84
Changes
1
Hide whitespace changes
Inline
Side-by-side
py/makeqstrdata.py
View file @
5bb7d991
...
...
@@ -24,10 +24,17 @@ def compute_hash(qstr):
hash
=
(
hash
*
33
)
^
ord
(
char
)
return
hash
&
0xffff
# given a list of (name,regex) pairs, find the first one that matches the given line
def
re_match
(
regexs
,
line
):
for
name
,
regex
in
regexs
:
match
=
re
.
match
(
regex
,
line
)
if
match
:
return
name
,
match
return
None
,
None
def
do_work
(
infiles
):
# read the qstrs in from the input files
qstrs
=
{}
cpp_header_blocks
=
3
for
infile
in
infiles
:
with
open
(
infile
,
'rt'
)
as
f
:
line_number
=
0
...
...
@@ -35,23 +42,19 @@ def do_work(infiles):
line_number
+=
1
line
=
line
.
strip
()
# ignore blank lines
and comment
s
if
len
(
line
)
==
0
or
line
.
startswith
(
'//'
):
# ignore blank lines
, comments and preprocessor directive
s
if
len
(
line
)
==
0
or
line
.
startswith
(
'//'
)
or
line
.
startswith
(
'#'
)
:
continue
# We'll have 3 line-number lines for py/qstrdefs.h - initial, leaving it to
# go into other headers, and returning to it.
if
line
.
startswith
(
'# '
)
and
'py/qstrdefs.h'
in
line
:
cpp_header_blocks
-=
1
continue
if
cpp_header_blocks
!=
0
:
continue
# verify line is of the correct form
match
=
re
.
match
(
r
'Q\((.+)\)$'
,
line
)
if
not
match
:
# work out what kind of line it is
match_kind
,
match
=
re_match
([(
'qstr'
,
r
'Q\((.+)\)$'
),
(
'cdecl'
,
r
'(typedef|extern) [A-Za-z0-9_* ]+;$'
)],
line
)
if
match_kind
is
None
:
# unknown line format
print
(
'({}:{}) bad qstr format, got {}'
.
format
(
infile
,
line_number
,
line
),
file
=
sys
.
stderr
)
return
False
elif
match_kind
!=
'qstr'
:
# not a line with a qstr
continue
# get the qstr value
qstr
=
match
.
group
(
1
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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