`
yiminghe
  • 浏览: 1460214 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

narcissus 试用

阅读更多

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_

    标题 "narcissus_python_" 暗示我们要讨论的是使用 Python 编程语言来找出1000以内所有水仙花数的问题。水仙花数是指一个三位数,其各位数字的立方和等于该数本身。例如,153(1^3 + 5^3 + 3^3 = 153)就是一个水仙...

    Narcissus-main.zip

    "Narcissus-main.zip"这个压缩包文件就包含了这样一个基于Python的人脸识别项目,让我们一起深入探讨其中的技术细节和实现原理。 首先,我们要了解人脸识别的基本概念。人脸识别是一种生物特征识别技术,通过分析...

    narcissus_python_源码.zip

    《Narcissus_Python_源码解析》 在编程世界中,源码是软件的灵魂,它揭示了程序运行的内部逻辑。对于Python这样的高级语言,源码的重要性更是不言而喻。本篇将深入探讨名为"Narcissus"的Python源码项目,通过解析其...

    parcissus::package: 作为浏览器包的 Narcissus JavaScript Parser

    这是 Narcissus JavaScript 解析器,捆绑为单个文件以供浏览器使用。 安装此脚本会创建一个名为parcissus全局parcissus ,它是解析器对象。 感谢 Browserfy 让这个简单的创建。执照此存储库的内容受 Mozilla 公共...

    红外扫描成像系统中Narcissus等效温差的修正计算

    根据辐射学原理,并考虑到实际探测器的接收尺寸,对现有的关于Narcissus等效温差的计算进行了修正。可以在红外光学系统设计阶段评价其Narcissus效应的影响程度,并为红外热成像系统提供评价Narcissus效应的定量判据。

    水仙花数narcissus number

    水仙花数计算,比如153=pow(1,3)+pow(5,3)+pow(3,3) 支持N位的水仙花数计算

    打印出所有的"水仙花数(narcissus number),所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身 例如

    题目:打印出所有的"水仙花数(narcissus number)“,所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 逻辑:利用for循环控制...

    JS in JS

    标题和描述中的“JS in JS”以及标签都指向了一个深入探讨JavaScript语言内部机制的主题,具体而言,这涉及到了Mozilla的Narcissus项目——一个用JavaScript编写的JavaScript解释器。Narcissus由Mozilla开发,旨在...

    崇明水仙(Narcissus tazetta var. chinensis)不同外植体分化能力与鳞茎增大初探 (2008年)

    以崇明水仙鳞茎的上、中、下部、嫩叶和幼嫩花序为外植体,研究其在离体培养系统中的再分化能力,结果表明,带鳞茎盘的鳞茎和幼嫩花序最容易分化出小鳞茎.以组培获得的带鳞茎盘的鳞茎为材料建立快繁体系,40 d内小鳞...

    Java 上机作业2020.3.20

    1. `narcissus()` 方法:这个方法的目的是找出所有的“水仙花数”。水仙花数是指一个三位数,其每一位上的数字的立方和等于这个数本身。例如,153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。为了实现这个方法,...

    ifcnarcissus

    **标题解析:**"ifcnarcissus" 这个标题代表的是一个特定的项目或者软件,它基于 Narcissus JavaScript Interpreter 进行了扩展,加入了信息流控制(IFC)的功能。Narcissus 是一个用 JavaScript 编写的 JavaScript ...

    margin:为开放的心态而设计的轻量级标记

    Black Narcissus Adaptation [Is equivalent to...] Favorite Movies: - Eyes Wide Shut - Black Narcissus - Adaptation [Is equivalent to...] ** Favorite Movies ** > Eyes Wide Shut > Blac

    基于c语言的简单穷举水仙花数.zip

    接下来,我们来看看“narcissus2.c”和“narcissus.c”。这两个文件很可能是C语言编写的源代码,分别实现了查找水仙花数的不同版本或优化。源代码文件通常以“.c”为扩展名,它们包含了可读的文本指令,这些指令会被...

    中国水仙高效再生体系的建立

    中国水仙高效再生体系的建立,冯莹,周翔,以三年生中国水仙(Narcissus tazetta var. chinensis)鳞茎为试验材料,研究中国水仙离体培养有效的消毒处理方式及高效的离体再生体系。试�

    湖南省2020年高中英语学业水平合格性考试仿真试卷(专家版六)

    这个玻璃艺术作品被认为是世界上最大的,由艺术家Narcissus Quagliata耗时近四年创作完成,吸引了无数游客驻足欣赏。 最后,文章提到了瑞典斯德哥尔摩的T-centralen站,它是整个斯德哥尔摩地铁系统的中心,三条线路...

    GRE与希腊神话有关的单词总结

    9. **Narcissus** - 自恋的美少年,变成水仙花的故事,相关词汇有**Narcissism**(自恋)。 10. **Echo** - 山谷女神,因被诅咒只能重复他人的话语,与**Narcissus**的故事相关。 11. **Eris** - 不和女神,引发...

    Java 上机作业2020.4.3

    在这个Java上机作业中,你需要实现一个名为`MyArray`的类,该类包含一个一维整数数组`arr`以及一系列与数组操作相关的非静态方法。以下是详细的知识点: 1. **数组定义**: - `MyArray`类有一个私有属性`int[] arr...

    母水仙开题报告书(2016-12-5)陶瑞萱修改)-论文.zip

    "母水仙",学名Narcissus pseudonarcissus,是水仙属的一种,属于多年生草本植物,广泛分布于欧洲,尤其在地中海地区较为常见。在园艺领域,母水仙因其早春开花、花朵美丽而受到欢迎,通常用于园林绿化、花坛布置或...

Global site tag (gtag.js) - Google Analytics