mirror of
https://github.com/openwrt/packages.git
synced 2026-04-15 19:02:09 +00:00
v3.0 removes the dependency on PLY by rewriting pycparser with a hand-written lexer and recursive-descent parser for C. No API changes or functionality changes - the same AST is produced as before. Other changes: - Drop EOL Python 3.8 and 3.9 support (minimum now 3.10) - Add support for Python 3.14 Since PLY is no longer used: - Remove python-ply from PKG_BUILD_DEPENDS and HOST_BUILD_DEPENDS - Remove +python3-ply from package DEPENDS - Remove 001-use-external-ply.patch (no longer needed) Full release notes: https://github.com/eliben/pycparser/releases/tag/release_v3.00 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
32 lines
925 B
Bash
Executable File
32 lines
925 B
Bash
Executable File
#!/bin/sh
|
|
|
|
[ "$1" = "python3-pycparser" ] || exit 0
|
|
|
|
python3 - << EOF
|
|
import sys
|
|
import pycparser
|
|
|
|
# aardelean: yes, it's hardcoded here, hopefully we don't get too many;
|
|
# but for version 3.0 on pypi.org, pycparser reports 3.00
|
|
if "3.0" == "$2" and pycparser.__version__ == "3.00":
|
|
pass
|
|
elif pycparser.__version__ != "$2":
|
|
print("Wrong version: " + pycparser.__version__)
|
|
sys.exit(1)
|
|
|
|
# Test basic parsing of a simple C snippet
|
|
parser = pycparser.CParser()
|
|
ast = parser.parse("int x = 5;", filename='<none>')
|
|
assert ast is not None, "Failed to parse simple C code"
|
|
|
|
# Verify the AST contains a FileAST node
|
|
assert isinstance(ast, pycparser.c_ast.FileAST), \
|
|
f"Expected FileAST, got {type(ast)}"
|
|
|
|
# Test parsing a function declaration
|
|
ast2 = parser.parse("int foo(int a, int b) { return a + b; }", filename='<none>')
|
|
assert ast2 is not None, "Failed to parse function declaration"
|
|
|
|
sys.exit(0)
|
|
EOF
|