cirru-parser v0.10.8
Cirru Parser
Cirru is an indentation-based grammar. You may use it to create your own DSLs or scripting languages.
Demo http://repo.cirru.org/parser.coffee
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 code
in Cirru grammar, filename
is optional:
A token in syntaxTree
is 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)
:
pare
is short for parse
, filename
is optional.
simplifiedTree
does not contain informations of files,
like line numbers, file content, which are needed in caution
.
A token from pare
is a string, i.e. the text
field of parsing results.
Live demo
By typing on the left you should see the pare
results 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, you may check it out here.
Development
Run tests:
cirru-script test.cirru
Write code:
yarn
yarn watch
# view generated index.html in a web server
Read more details https://github.com/mvc-works/cirruscript-workflow
Changelog
0.10.1
- switch to
ex, ey
from$x, $y
0.10.0
- Rewritten with new solution from Go
- drop caution
License
MIT
3 years ago
4 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago