Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
PyPy
pypy
Commits
c2cf5546d3e0
Commit
2a259fa7
authored
Jan 23, 2023
by
Matti Picus
Browse files
update pycparser
parent
28187446337e
Pipeline
#61657
passed with stage
in 5 minutes and 28 seconds
Changes
6
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
lib_pypy/cffi/_pycparser/README
View file @
c2cf5546
...
...
@@ -14,4 +14,4 @@ class CParser(PLYParser):
When updating the version of this in-place, you must regenerate the
lextab.py and yacctab.py files. They will be regenerated on import if they
are not found, so they should be removed, then regenrated, then the new
versions committed.
versions committed.
Note that they may be generated in a different directory.
lib_pypy/cffi/_pycparser/__init__.py
View file @
c2cf5546
...
...
@@ -49,7 +49,7 @@ def preprocess_file(filename, cpp_path='cpp', cpp_args=''):
def
parse_file
(
filename
,
use_cpp
=
False
,
cpp_path
=
'cpp'
,
cpp_args
=
''
,
parser
=
None
):
parser
=
None
,
encoding
=
None
):
""" Parse a C file using pycparser.
filename:
...
...
@@ -71,6 +71,9 @@ def parse_file(filename, use_cpp=False, cpp_path='cpp', cpp_args='',
r'-I../utils/fake_libc_include'
If several arguments are required, pass a list of strings.
encoding:
Encoding to use for the file to parse
parser:
Optional parser object to be used instead of the default CParser
...
...
@@ -82,7 +85,7 @@ def parse_file(filename, use_cpp=False, cpp_path='cpp', cpp_args='',
if
use_cpp
:
text
=
preprocess_file
(
filename
,
cpp_path
,
cpp_args
)
else
:
with
io
.
open
(
filename
)
as
f
:
with
io
.
open
(
filename
,
encoding
=
encoding
)
as
f
:
text
=
f
.
read
()
if
parser
is
None
:
...
...
lib_pypy/cffi/_pycparser/c_lexer.py
View file @
c2cf5546
...
...
@@ -112,6 +112,7 @@ class CLexer(object):
'_BOOL'
,
'_COMPLEX'
,
'_NORETURN'
,
'_THREAD_LOCAL'
,
'_STATIC_ASSERT'
,
'_ATOMIC'
,
'_ALIGNOF'
,
'_ALIGNAS'
,
'_PRAGMA'
,
)
keyword_map
=
{}
...
...
lib_pypy/cffi/_pycparser/c_parser.py
View file @
c2cf5546
...
...
@@ -571,15 +571,29 @@ class CParser(PLYParser):
self
.
_parse_error
(
'Directives not supported yet'
,
self
.
_token_coord
(
p
,
1
))
# This encompasses two types of C99-compatible pragmas:
# - The #pragma directive:
# # pragma character_sequence
# - The _Pragma unary operator:
# _Pragma ( " string_literal " )
def
p_pppragma_directive
(
self
,
p
):
""" pppragma_directive : PPPRAGMA
| PPPRAGMA PPPRAGMASTR
| _PRAGMA LPAREN unified_string_literal RPAREN
"""
if
len
(
p
)
==
3
:
if
len
(
p
)
==
5
:
p
[
0
]
=
c_ast
.
Pragma
(
p
[
3
],
self
.
_token_coord
(
p
,
2
))
elif
len
(
p
)
==
3
:
p
[
0
]
=
c_ast
.
Pragma
(
p
[
2
],
self
.
_token_coord
(
p
,
2
))
else
:
p
[
0
]
=
c_ast
.
Pragma
(
""
,
self
.
_token_coord
(
p
,
1
))
def
p_pppragma_directive_list
(
self
,
p
):
""" pppragma_directive_list : pppragma_directive
| pppragma_directive_list pppragma_directive
"""
p
[
0
]
=
[
p
[
1
]]
if
len
(
p
)
==
2
else
p
[
1
]
+
[
p
[
2
]]
# In function definitions, the declarator can be followed by
# a declaration list, for old "K&R style" function definitios.
def
p_function_definition_1
(
self
,
p
):
...
...
@@ -671,12 +685,12 @@ class CParser(PLYParser):
# sum += 1;
# }
def
p_pragmacomp_or_statement
(
self
,
p
):
""" pragmacomp_or_statement : pppragma_directive statement
""" pragmacomp_or_statement : pppragma_directive
_list
statement
| statement
"""
if
isinstance
(
p
[
1
],
c_ast
.
Pragma
)
and
len
(
p
)
==
3
:
if
len
(
p
)
==
3
:
p
[
0
]
=
c_ast
.
Compound
(
block_items
=
[
p
[
1
]
,
p
[
2
]],
block_items
=
p
[
1
]
+
[
p
[
2
]],
coord
=
self
.
_token_coord
(
p
,
1
))
else
:
p
[
0
]
=
p
[
1
]
...
...
lib_pypy/cffi/_pycparser/lextab.py
View file @
c2cf5546
# lextab.py. This file automatically created by PLY (version 3.10). Don't edit!
_tabversion
=
'3.10'
_lextokens
=
set
((
'AUTO'
,
'BREAK'
,
'CASE'
,
'CHAR'
,
'CONST'
,
'CONTINUE'
,
'DEFAULT'
,
'DO'
,
'DOUBLE'
,
'ELSE'
,
'ENUM'
,
'EXTERN'
,
'FLOAT'
,
'FOR'
,
'GOTO'
,
'IF'
,
'INLINE'
,
'INT'
,
'LONG'
,
'REGISTER'
,
'OFFSETOF'
,
'RESTRICT'
,
'RETURN'
,
'SHORT'
,
'SIGNED'
,
'SIZEOF'
,
'STATIC'
,
'STRUCT'
,
'SWITCH'
,
'TYPEDEF'
,
'UNION'
,
'UNSIGNED'
,
'VOID'
,
'VOLATILE'
,
'WHILE'
,
'__INT128'
,
'_BOOL'
,
'_COMPLEX'
,
'_NORETURN'
,
'_THREAD_LOCAL'
,
'_STATIC_ASSERT'
,
'_ATOMIC'
,
'_ALIGNOF'
,
'_ALIGNAS'
,
'ID'
,
'TYPEID'
,
'INT_CONST_DEC'
,
'INT_CONST_OCT'
,
'INT_CONST_HEX'
,
'INT_CONST_BIN'
,
'INT_CONST_CHAR'
,
'FLOAT_CONST'
,
'HEX_FLOAT_CONST'
,
'CHAR_CONST'
,
'WCHAR_CONST'
,
'U8CHAR_CONST'
,
'U16CHAR_CONST'
,
'U32CHAR_CONST'
,
'STRING_LITERAL'
,
'WSTRING_LITERAL'
,
'U8STRING_LITERAL'
,
'U16STRING_LITERAL'
,
'U32STRING_LITERAL'
,
'PLUS'
,
'MINUS'
,
'TIMES'
,
'DIVIDE'
,
'MOD'
,
'OR'
,
'AND'
,
'NOT'
,
'XOR'
,
'LSHIFT'
,
'RSHIFT'
,
'LOR'
,
'LAND'
,
'LNOT'
,
'LT'
,
'LE'
,
'GT'
,
'GE'
,
'EQ'
,
'NE'
,
'EQUALS'
,
'TIMESEQUAL'
,
'DIVEQUAL'
,
'MODEQUAL'
,
'PLUSEQUAL'
,
'MINUSEQUAL'
,
'LSHIFTEQUAL'
,
'RSHIFTEQUAL'
,
'ANDEQUAL'
,
'XOREQUAL'
,
'OREQUAL'
,
'PLUSPLUS'
,
'MINUSMINUS'
,
'ARROW'
,
'CONDOP'
,
'LPAREN'
,
'RPAREN'
,
'LBRACKET'
,
'RBRACKET'
,
'LBRACE'
,
'RBRACE'
,
'COMMA'
,
'PERIOD'
,
'SEMI'
,
'COLON'
,
'ELLIPSIS'
,
'PPHASH'
,
'PPPRAGMA'
,
'PPPRAGMASTR'
))
_lextokens
=
set
((
'AUTO'
,
'BREAK'
,
'CASE'
,
'CHAR'
,
'CONST'
,
'CONTINUE'
,
'DEFAULT'
,
'DO'
,
'DOUBLE'
,
'ELSE'
,
'ENUM'
,
'EXTERN'
,
'FLOAT'
,
'FOR'
,
'GOTO'
,
'IF'
,
'INLINE'
,
'INT'
,
'LONG'
,
'REGISTER'
,
'OFFSETOF'
,
'RESTRICT'
,
'RETURN'
,
'SHORT'
,
'SIGNED'
,
'SIZEOF'
,
'STATIC'
,
'STRUCT'
,
'SWITCH'
,
'TYPEDEF'
,
'UNION'
,
'UNSIGNED'
,
'VOID'
,
'VOLATILE'
,
'WHILE'
,
'__INT128'
,
'_BOOL'
,
'_COMPLEX'
,
'_NORETURN'
,
'_THREAD_LOCAL'
,
'_STATIC_ASSERT'
,
'_ATOMIC'
,
'_ALIGNOF'
,
'_ALIGNAS'
,
'_PRAGMA'
,
'ID'
,
'TYPEID'
,
'INT_CONST_DEC'
,
'INT_CONST_OCT'
,
'INT_CONST_HEX'
,
'INT_CONST_BIN'
,
'INT_CONST_CHAR'
,
'FLOAT_CONST'
,
'HEX_FLOAT_CONST'
,
'CHAR_CONST'
,
'WCHAR_CONST'
,
'U8CHAR_CONST'
,
'U16CHAR_CONST'
,
'U32CHAR_CONST'
,
'STRING_LITERAL'
,
'WSTRING_LITERAL'
,
'U8STRING_LITERAL'
,
'U16STRING_LITERAL'
,
'U32STRING_LITERAL'
,
'PLUS'
,
'MINUS'
,
'TIMES'
,
'DIVIDE'
,
'MOD'
,
'OR'
,
'AND'
,
'NOT'
,
'XOR'
,
'LSHIFT'
,
'RSHIFT'
,
'LOR'
,
'LAND'
,
'LNOT'
,
'LT'
,
'LE'
,
'GT'
,
'GE'
,
'EQ'
,
'NE'
,
'EQUALS'
,
'TIMESEQUAL'
,
'DIVEQUAL'
,
'MODEQUAL'
,
'PLUSEQUAL'
,
'MINUSEQUAL'
,
'LSHIFTEQUAL'
,
'RSHIFTEQUAL'
,
'ANDEQUAL'
,
'XOREQUAL'
,
'OREQUAL'
,
'PLUSPLUS'
,
'MINUSMINUS'
,
'ARROW'
,
'CONDOP'
,
'LPAREN'
,
'RPAREN'
,
'LBRACKET'
,
'RBRACKET'
,
'LBRACE'
,
'RBRACE'
,
'COMMA'
,
'PERIOD'
,
'SEMI'
,
'COLON'
,
'ELLIPSIS'
,
'PPHASH'
,
'PPPRAGMA'
,
'PPPRAGMASTR'
))
_lexreflags
=
64
_lexliterals
=
''
_lexstateinfo
=
{
'INITIAL'
:
'inclusive'
,
'ppline'
:
'exclusive'
,
'pppragma'
:
'exclusive'
}
...
...
lib_pypy/cffi/_pycparser/yacctab.py
View file @
c2cf5546
This source diff could not be displayed because it is too large. You can
view the blob
instead.
Write
Preview
Supports
Markdown
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