编译使用脚本js2c.py ,编译JS文件生存node_javascript.cc命令如下

js2c.py是一个用于将JS文件转换为C++源码的工具。它读取宏定义文件,处理JS源文件,并生成对应的C++代码。主要步骤包括读取所有*macro.py文件,解析并存储宏定义,然后转换JS文件,通过ExpandMacros移除特定宏。最终,所有JS文件的内容被合并并写入到node_javascript.cc文件中,为C++编译做准备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js2c.py源码分析:

def main():
//将目标文件赋值给natives .sys.argv[0]是自身的文件名
natives = sys.argv[1]
//将所有要编译的JS文件加入到source_files列表中去
source_files = sys.argv[2:]
//下面这条if语句实际上变没有执行,不用理会
if source_files[-2] == ‘-t’:
global TEMPLATE
TEMPLATE = source_files[-1]
source_files = source_files[:-2]
//核心函数,将所有JS文件转换成数组,一一对应
JS2C(source_files, [natives])

def JS2C(source, target):
modules = []
consts = {}
macros = {}
macro_lines = []

for s in source:
//按照路径符对字符串解析,以macros.py结尾的文件读取存在列表中
if (os.path.split(str(s))[1]).endswith(‘macros.py’):
macro_lines.extend(ReadLines(str(s)))
else:
//将所有JS文件加到列表中
modules.append(s)

Process input from all *macro.py files

//用正则将读取的数据提到到字典里面,
(consts, macros) = ReadMacros(macro_lines)
//通过对数据分析发现consts是空的,MACROS的数据如下
“”"
name=DTRACE_HTTP_CLIENT_REQUEST macro=<main.TextMacro instance at 0x7fbf8282d200>
name=DTRACE_NET_STREAM_END macro=<main.TextMacro instance at 0x7fbf8282d3b0>
name=DCHECK_NE macro=<main.TextMacro instance at 0x7fbf8282d878>
name=DTRACE_HTTP_CLIENT_RESPONSE macro=<main.TextMacro instance at 0x7fbf8282d248>
name=CHECK_LT macro=<main.TextMacro instance at 0x7fbf8282d170>
name=DCHECK_LE macro=<main.TextMacro instance at 0x7fbf8282d7e8>
name=COUNTER_HTTP_CLIENT_REQUEST macro=<main.TextMacro instance at 0x7fbf8282d5f0>
name=CHECK_LE macro=<main.TextMacro instance at 0x7fbf8282d128>
name=DTRACE_HTTP_SERVER_RESPONSE macro=<main.TextMacro instance at 0x7fbf8282d2d8>
name=DCHECK_LT macro=<main.TextMacro instance at 0x7fbf8282d830>
name=CHECK macro=<main.TextMacro instance at 0x7fbf82820a28>
name=COUNTER_HTTP_SERVER_RESPONSE macro=<main.TextMacro instance at 0x7fbf8282d5a8>
name=COUNTER_NET_SERVER_CONNECTION_CLOSE macro=<main.TextMacro ins

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bruk_spp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值