cirru-parser

2019-09-13

Cirru Parser in CoffeeScript

Cirru Parser

Cirru is an indentation-based grammar. You may use it to create your own DSLs or scripting languages.

Find more at http://cirru.org/

Usage

npm install --save cirru-parser
{parse, pare} = require 'cirru-parser'

syntaxTree = parse 'code', 'filename' # [{text: 'code', x: 0, y:0, ex: 4, ey: 1}]
simplifiedTree = pare 'code', 'filename' # ['code']
  • parse(code, filename):

Parse codein Cirru grammar, filenameis optional:

A token in syntaxTreeis like:

token =
  text: 'get'
  x: 0
  y: 0
  ex: 3
  ey: 3
  path: 'a.cirru'

And expressions here are just tokens in arrays, like:

expression = [
  token
,
  [
    token
  ,
    [
      token
    ]
  ]
]
  • pare(code, filename):

pareis short for parse, filenameis optional.

simplifiedTreedoes not contain informations of files, like line numbers, file content, which are needed in caution.

A token from pareis a string, i.e. the textfield of parsing results.

Live demo

Demo: http://repo.cirru.org/parser/. By typing on the left you should see the pareresults on the right.

Grammar

Detailed examples can be found in cirru/and ast/directories.

For short, there are then rules of Cirru:

  • It indents with 2 spaces
  • Parentheses are closed in the same line it opened
  • Strings are quoted with double quotes: "string"
  • $folds followed tokens in an expression
  • ,unfolds followed tokens in an expression

Parsing

Here's a Gist showing how it's parsed(not including the steps solving $and ,):

https://gist.github.com/jiyinyiyong/bdda3f616ff0f1bea917

This method was developed in [the Go version][go], you may check it out here.

Development

Run tests:

cirru-script test.cirru

Write code:

npm i
gulp html
webpack-dev-server --hot
# view generated index.html in a web server

Read more details https://github.com/mvc-works/webpack-workflow

Changelog

0.10.1

  • switch to ex, eyfrom $x, $y

0.10.0

  • Rewritten with new solution from Go
  • drop caution

License

MIT

HomePage

https://github.com/Cirru/cirru-parser

Repository

https://github.com/Cirru/cirru-parser.git


上一篇:stir-template
下一篇:cirru-html
相关教程
关注微信

扫码加入 JavaScript 社区

相关文章

首次访问,需要验证
微信扫码,关注即可
(仅需验证一次)

欢迎加入 JavaScript 社区

号内回复关键字:

回到顶部