Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

homunculus

Package Overview
Dependencies
Maintainers
2
Versions
164
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

homunculus

A lexer&parser by Javascript

  • 0.4.4
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
89
decreased by-7.29%
Maintainers
2
Weekly downloads
 
Created
Source

A lexer&parser by Javascript

homunculus取自钢之炼金术师中的人造人,英语亦作小矮人,意指底层基石再造

NPM version Build Status Coverage Status Dependency Status

INSTALL

npm install homunculus

使用说明

  • 解析语法并返回语法树和此法单元序列。
  • CommonJS/AMD/CMD自适应。

API

Homunculus

  • getClass(type:String, lan:String):class
    • type:
      • lexer
      • parser
      • node
      • context
      • token
    • lan:
      • js
      • javascript
      • es
      • es5
      • ecmascript
      • es6
      • as
      • actionscript
      • css
      • html
      • htm
  • getLexer(lan:String):lexer/Lexer
  • lan:
    • js
    • javascript
    • es
    • es5
    • ecmascript
    • es6
    • as
    • actionscript
    • css
    • java
    • c++
    • cpp
    • cplusplus
    • html
    • htm
  • getParser(lan:String):parser/Parser
    • lan:
      • js
      • javascript
      • es
      • es5
      • ecmascript
      • es6
      • css
      • html
      • htm
  • getContext(lan:String):parser/Context
    • lan:
      • js
      • javascript
      • es
      • es5
      • ecmascript

lexer/Lexer

方法
  • constructor(Rule:lexer/rule/Rule) 传入语法规则Rule
  • parse(code:String):Array<lexer/Token> 传入代码并返回解析后的此法单元token列表
  • tokens():Array<lexer/Token> 返回已解析好的此番单元token列表
  • cache(line:init):void 设置缓冲解析行,每次最多解析几行代码,防止code过大卡死
  • finish():Boolean 设置cache有用,当前是否解析完毕
  • line():int code有多少行
  • col():int code最大列是多少
静态属性
  • STRICT: 0 严格模式语法错误后抛出异常
  • LOOSE: 1 宽松模式错误后忽略
  • mod(type:int):int 读取/设置模式

parser/Parser

方法
  • constructor(lexer:Lexer) 传入词法分析器
  • parse(code:String):Node 传入代码解析并返回语法树
  • ast():Node 返回已解析好的语法树
  • ignore():Node 返回解析中被忽略掉的空白注释等内容

lexer/Token

方法
  • constructor(type:int, content:String, val:String, sIndex:int) 构造函数传入token的类型、内容、字面内容和在代码中的开始字符索引
  • type(t:int):int 读取/设置类型
  • content(c:Stirng):String 读取/设置内容
  • val(v:String):String 读取/设置字面内容,字面内容不同于内容之处在于是否包含引号
  • tag(t:int):String 读取/设置类型,返回的是类型额字符串形式
  • tid(t:int):int 读取/设置token索引,默认所有token自增形式添加索引
  • sIndex(i:int):int 读取/设置token在code中的字符索引
静态属性
  • type(t:int):String 返回类型的字符串形式

parser/Node

方法
  • constructor(type:String, children:Node/Array = null) 传入类型和子节点
  • name(t:String):String 读取/设置节点类型
  • leaves():Array 返回子节点列表
  • leaf(i:int):Node 返回第i个子节点
  • size():int 返回有几个子节点
  • first():Node 返回第一个子节点
  • last():Node 返回最后一个子节点
  • isEmpty():Boolean 返回是否没有子节点
  • add(...node:Node):void 添加若干个子节点
  • token():Token 实际同leaves()一样,不过当name()为Token时children存储的是终结符Token
  • parent():Node 返回父节点
  • prev():Node 返回兄弟前一个节点
  • next():Node 返回兄弟后一个节点

lexer/rule/Rule

方法
  • constructor(keyWords:Array, supportPerlReg:Boolean = false) 关键字列表和是否支持perl风格的正则表达式
  • addKeyWord(kw:String):Object 添加未知关键字并返回关键字hash
特别的,对于css还可以设置添加属性和颜色别名
  • addValue(v:String):Object 添加未知属性并返回属性hash
  • addColor(c:String):Object 添加未知颜色并返回颜色hash

AST

当调用语法分析器解析后,会返回生成ast,这是一个树状数据结构,每个节点都是对应语法解析器目录下的Node.js的实例。
demo目录下是一个用js的parser分析输入js代码并画出ast形状的页面。
你也可以在线尝试它:http://army8735.me/homunculus

License

[MIT License]

Keywords

FAQs

Package last updated on 06 Sep 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc