narcissus
是一个由 javascript 自身实现的 javascript 解释器,最终效果和 spidermonkey
引擎保持一致,足以证明 javascript 本身就是一个完备的元循环
语言。
运行@shell
narcissus 可以跑在 spidermonkey shell 以及浏览器 spidermonkey 引擎环境下,经过修改也可运行于最新的 firefox 4.0,其他浏览器待测,首先说下如何在 mac 下的 spidermonkey shell 中运行:
安装 spidermonkey shell
1.安装 xcode
2.安装 MacPorts
,mac 下一个不错的软件依赖管理工具
3.安装 autoconf213 (build spidermonkey 必须要这个版本),运行 sudo port install autoconf213 安装
4.下载 spidermonkey 源码,推荐 1.85
,不推荐 1.70
5.进入 spidermonkey 源码目录 js/src ,先运行 autoconf213 ,再运行 make
6.最后在 js/src 目录下生成 js 可执行文件,大功告成,可执行 ./js 进入javascript解释器交互模式。
在 shell 中运行 narcissus
1.git clone 一分 nacissus
到本地目录 /code/narcissus
2.硬链接上一大步生成 js 可执行文件到 /code/narcissus : ln spidermonkey/js/src/js /code/narcissus
3.最后执行 ./njs python 脚本即可进入 narcissus 解释器的交互模式。
运行@browser
查看 njs python 脚本,可发现其实内部是通过调用spidermonkey shell 的 js 载入 narcissus 代码文件来启动 narcissus,具体执行命令实际为:
'/Users/yiminghe/code/javascript/narcissus/js', '-f', '/Users/yiminghe/code/javascript/narcissus/lib/jsdefs.js', '-f', '/Users/yiminghe/code/javascript/narcissus/lib/jslex.js', '-f', '/Users/yiminghe/code/javascript/narcissus/lib/jsparse.js', '-f', '/Users/yiminghe/code/javascript/narcissus/lib/jsdecomp.js', '-f', '/Users/yiminghe/code/javascript/narcissus/lib/jsresolve.js', '-f', '/Users/yiminghe/code/javascript/narcissus/lib/jsexec.js', '-e', 'Narcissus.interpreter.repl();'
其中载入了一些 narcissus 的代码文件,最后执行表达式:
Narcissus.interpreter.repl();
进入了 narcissu 引擎的 repl
模式,该函数中定义在 jsexec.js,进行建立执行环境,解析语法树并执行的过程。
同时 jsexec.js 还提供了一个
Narcissus.interpreter.evaluate
函数,效果同 eval 一样,可直接执行 javascript 字符串,那么就可以不调用依赖 shell io 的 repl,而直接调用 evaluate,载入必要的引擎代码文件后,narcissus 就可以直接运行在浏览器上了:
narcissus @ firefox 4
要注意的是:firefox4 采用的 JägerMonkey
似乎和 spidermonkey 并不完全一致,例如不支持 let
语法,如果要运行在 firefox 4 中的话,需要将所有的 let 替换为 var。
分享到:
相关推荐
标题 "narcissus_python_" 暗示我们要讨论的是使用 Python 编程语言来找出1000以内所有水仙花数的问题。水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如,153(1^3 + 5^3 + 3^3 = 153)就是一个水仙...
"Narcissus-main.zip"这个压缩包文件就包含了这样一个基于Python的人脸识别项目,让我们一起深入探讨其中的技术细节和实现原理。 首先,我们要了解人脸识别的基本概念。人脸识别是一种生物特征识别技术,通过分析...
《Narcissus_Python_源码解析》 在编程世界中,源码是软件的灵魂,它揭示了程序运行的内部逻辑。对于Python这样的高级语言,源码的重要性更是不言而喻。本篇将深入探讨名为"Narcissus"的Python源码项目,通过解析其...
这是 Narcissus JavaScript 解析器,捆绑为单个文件以供浏览器使用。 安装此脚本会创建一个名为parcissus全局parcissus ,它是解析器对象。 感谢 Browserfy 让这个简单的创建。执照此存储库的内容受 Mozilla 公共...
根据辐射学原理,并考虑到实际探测器的接收尺寸,对现有的关于Narcissus等效温差的计算进行了修正。可以在红外光学系统设计阶段评价其Narcissus效应的影响程度,并为红外热成像系统提供评价Narcissus效应的定量判据。
水仙花数计算,比如153=pow(1,3)+pow(5,3)+pow(3,3) 支持N位的水仙花数计算
题目:打印出所有的"水仙花数(narcissus number)“,所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 逻辑:利用for循环控制...
标题和描述中的“JS in JS”以及标签都指向了一个深入探讨JavaScript语言内部机制的主题,具体而言,这涉及到了Mozilla的Narcissus项目——一个用JavaScript编写的JavaScript解释器。Narcissus由Mozilla开发,旨在...
以崇明水仙鳞茎的上、中、下部、嫩叶和幼嫩花序为外植体,研究其在离体培养系统中的再分化能力,结果表明,带鳞茎盘的鳞茎和幼嫩花序最容易分化出小鳞茎.以组培获得的带鳞茎盘的鳞茎为材料建立快繁体系,40 d内小鳞...
1. `narcissus()` 方法:这个方法的目的是找出所有的“水仙花数”。水仙花数是指一个三位数,其每一位上的数字的立方和等于这个数本身。例如,153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。为了实现这个方法,...
**标题解析:**"ifcnarcissus" 这个标题代表的是一个特定的项目或者软件,它基于 Narcissus JavaScript Interpreter 进行了扩展,加入了信息流控制(IFC)的功能。Narcissus 是一个用 JavaScript 编写的 JavaScript ...
Black Narcissus Adaptation [Is equivalent to...] Favorite Movies: - Eyes Wide Shut - Black Narcissus - Adaptation [Is equivalent to...] ** Favorite Movies ** > Eyes Wide Shut > Blac
接下来,我们来看看“narcissus2.c”和“narcissus.c”。这两个文件很可能是C语言编写的源代码,分别实现了查找水仙花数的不同版本或优化。源代码文件通常以“.c”为扩展名,它们包含了可读的文本指令,这些指令会被...
中国水仙高效再生体系的建立,冯莹,周翔,以三年生中国水仙(Narcissus tazetta var. chinensis)鳞茎为试验材料,研究中国水仙离体培养有效的消毒处理方式及高效的离体再生体系。试�
这个玻璃艺术作品被认为是世界上最大的,由艺术家Narcissus Quagliata耗时近四年创作完成,吸引了无数游客驻足欣赏。 最后,文章提到了瑞典斯德哥尔摩的T-centralen站,它是整个斯德哥尔摩地铁系统的中心,三条线路...
9. **Narcissus** - 自恋的美少年,变成水仙花的故事,相关词汇有**Narcissism**(自恋)。 10. **Echo** - 山谷女神,因被诅咒只能重复他人的话语,与**Narcissus**的故事相关。 11. **Eris** - 不和女神,引发...
在这个Java上机作业中,你需要实现一个名为`MyArray`的类,该类包含一个一维整数数组`arr`以及一系列与数组操作相关的非静态方法。以下是详细的知识点: 1. **数组定义**: - `MyArray`类有一个私有属性`int[] arr...
"母水仙",学名Narcissus pseudonarcissus,是水仙属的一种,属于多年生草本植物,广泛分布于欧洲,尤其在地中海地区较为常见。在园艺领域,母水仙因其早春开花、花朵美丽而受到欢迎,通常用于园林绿化、花坛布置或...