Python - C语言语法解析:pycparser模块

2022/1/12 22:04:58

本文主要是介绍Python - C语言语法解析:pycparser模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Python - C语言语法解析:pycparser模块

  • 0 前言
  • 1 pycparser模块(三方库)
    • 1.1 方法列表
    • 1.2 示例

0 前言

>>返回Python系列文章目录<<

pycparser是python的一个用于解析C语言的第三方库,用于获取C语言的语法树

1 pycparser模块(三方库)

argparse模块是Python的第三方库,需要安装

pip install pycparser 

pycparser模块导入方式

# parser_file 用于处理c语言文件
from pycparser import parse_file
# c语言有错误时,会引出此错误
from pycparser.plyparser import ParseError
# c_ast.py 文件下包含了抽象语法树的节点类
from pycparser.c_ast import *

1.1 方法列表

① 使用以下方法创建parser类:

ast = parse_file(filename, use_cpp = False)

# fake_libc_include文件夹放在处理的c语言目录下
ast = parse_file(filename, use_cpp = True, cpp_path=r'C:\MinGW\bin\gcc.exe', cpp_args=r'-I./fake_libc_include')
parse_file的参数说明
use_cpp是否使用本地c语言编译器预处理代码,去掉其中的#命令(头文件、宏定义、pragma)
cpp_path本地c语言编译器路径
cpp_args=r'-I./fake_libc_include'fake_libc_include文件夹路径,use_cpp=True时使用,需要从官网下载

② 使用以下方法给parser增加一个参数:

parser.add_argument()
add_argument的参数说明
default=没有设置值情况下的默认参数
required=如果设置了required=True,则在实际运行的时候不设置该参数将报错
type=默认的参数类型是str类型,如果你的程序需要一个整数或者布尔型参数,你需要设置type=inttype=bool
choices=[]参数值只能从几个选项里面选择
help=''指定参数的说明信息,在命令行用-h起效
dest=argparse默认的变量名是–或-后面的字符串,但是你也可以通过dest=xxx来设置参数的变量名,然后在代码中用args.xxx来获取参数的值
nargs=设置参数在使用可以提供的个数
N 参数的绝对个数(例如:3)
? 0或1个参数
* 0或所有参数
+ 所有,并且至少一个参数

③ 使用以下方法获得参数解析结果:

args = parser.parse_args()

1.2 示例

import argparse

def get_args():
    parser = argparse.ArgumentParser(description='argparse')
    parser.add_argument('--cd', '-c', help='working direction', required=True)
    parser.add_argument('--debug', '-d', choices=['N', 'Y'], default='N', required=False, help='debug mode, print all')
    args = parser.parse_args()
    return args

if __name__ == '__main__':
    args = get_args()
    if(args.debug == 'Y')
        # code

在命令行通过以下方式调用:

python test.py -c C:/ -d Y

或者生成exe后调用

test -c C:/ -d Y


这篇关于Python - C语言语法解析:pycparser模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程