修复 iter Attribute

pull/1/head
韩天峰 2 years ago
parent b275b0c530
commit 4cc76cc634
  1. 33
      cases/iter.py
  2. 2
      src/Python/Translator.php
  3. 8
      src/functions.php

@ -0,0 +1,33 @@
from pycparser import CParser, parse_file, c_ast
# 解析 C 代码并打印函数声明及定义
def extract_functions_from_file(filename):
# 解析 C 文件
ast = parse_file(filename, use_cpp=True)
# 用于存储函数声明和实现
function_declarations = []
function_definitions = []
# 遍历 AST
for node in ast.ext:
# 检查节点类型
if isinstance(node, c_ast.FuncDef):
# 如果是函数定义,保存定义
function_definitions.append(node.decl.name)
elif isinstance(node, c_ast.Decl):
# 如果是函数声明
if isinstance(node.type, c_ast.FuncType):
function_declarations.append(node.name)
# 输出结果
print("Function Declarations:")
for decl in function_declarations:
print(decl)
print("\nFunction Definitions:")
for defi in function_definitions:
print(defi)
# 调用函数,解析指定文件
extract_functions_from_file('your_file.c') # 替换为你的 C 源文件

@ -455,6 +455,8 @@ class Translator extends \PhpAot\Core\Translator
return $this->parseName($iter);
case 'Subscript':
return $this->parseSubscript($iter);
case 'Attribute':
return $this->parseAttribute($iter);
default:
debug($iter);
}

@ -7,10 +7,10 @@ function debug($v)
/**
* @var $translator Translator
*/
global $encryptor;
$lang = $encryptor->getLang();
if ($encryptor->mode == 'cli') {
echo 'Error: Unsupported ' . $lang . ' Syntax, Line: ' . $encryptor->getLine($v) . ', Type: ' . $encryptor->getType($v) . PHP_EOL;
global $translator;
$lang = $translator->getLang();
if ($translator->mode == 'cli') {
echo 'Error: Unsupported ' . $lang . ' Syntax, Line: ' . $translator->getLine($v) . ', Type: ' . $translator->getType($v) . PHP_EOL;
if (DEBUG) {
debug_print_backtrace();
var_dump($v);

Loading…
Cancel
Save