diff --git a/readme.md b/readme.md
index c758c41..2a45aca 100644
--- a/readme.md
+++ b/readme.md
@@ -13,17 +13,17 @@ To create a parser, first create a `grammar` with `lex`ical tokens and
an expression `tree` as follows:
```js
-var grammar = {
+const grammar = {
lex: {
"{": /^\{/,
"}": /^\}/,
"<": /^,
- "/>" : /^\/>/,
- "" : /^<\//,
+ "/>": /^\/>/,
+ "": /^<\//,
">": /^>/,
"SPACE": /^\s/,
"'": /^'/,
- '"': /^"/,
+ "\"": /^"/,
"=": /^=/,
ALPHA_NUMERIC: /^[A-Za-z0-9]+/,
TAGNAME: /^[a-z][-:_A-Za-z0-9]*/,
@@ -35,67 +35,67 @@ var grammar = {
},
tree: {
EXPRESSION: [
- ["TAG"],
- ["CLOSING"],
- ["MAGIC_OR_TEXT"],
- ["TAG", "EXPRESSION"],
- ["CLOSING", "EXPRESSION"],
- ["MAGIC_OR_TEXT", "EXPRESSION"]
+ [ "TAG" ],
+ [ "CLOSING" ],
+ [ "MAGIC_OR_TEXT" ],
+ [ "TAG", "EXPRESSION" ],
+ [ "CLOSING", "EXPRESSION" ],
+ [ "MAGIC_OR_TEXT", "EXPRESSION" ]
],
TAG: [
- ["<","TAGNAME",">"],
- ["<","TAGNAME","/>"],
- ["<","TAGNAME","SPACE",">"],
- ["<","TAGNAME","SPACE","/>"],
- ["<","TAGNAME","SPACE","ATTRS",">"],
- ["<","TAGNAME","SPACE","ATTRS", "/>"]
+ [ "<", "TAGNAME", ">" ],
+ [ "<", "TAGNAME", "/>" ],
+ [ "<", "TAGNAME", "SPACE", ">" ],
+ [ "<", "TAGNAME", "SPACE", "/>" ],
+ [ "<", "TAGNAME", "SPACE", "ATTRS", ">" ],
+ [ "<", "TAGNAME", "SPACE", "ATTRS", "/>" ]
],
CLOSING: [
- ["","TAGNAME",">"],
+ [ "", "TAGNAME", ">" ]
],
ATTRS: [
- ["ATTR"],
- ["ATTR", "SPACE", "ATTRS"],
- ["MAGIC"],
- ["MAGIC","ATTRS"]
+ [ "ATTR" ],
+ [ "ATTR", "SPACE", "ATTRS" ],
+ [ "MAGIC" ],
+ [ "MAGIC", "ATTRS" ]
],
ATTR: [
- ["QUOTE","=","QUOTE"],
- ["NOT_SPACE_RIGHT_CARROT","=","QUOTE"],
- ["NOT_SPACE_RIGHT_CARROT","=","NOT_SPACE_RIGHT_CARROT"],
- ["NOT_SPACE_RIGHT_CARROT","=","MAGIC"],
- ["NOT_SPACE_RIGHT_CARROT"]
+ [ "QUOTE", "=", "QUOTE" ],
+ [ "NOT_SPACE_RIGHT_CARROT", "=", "QUOTE" ],
+ [ "NOT_SPACE_RIGHT_CARROT", "=", "NOT_SPACE_RIGHT_CARROT" ],
+ [ "NOT_SPACE_RIGHT_CARROT", "=", "MAGIC" ],
+ [ "NOT_SPACE_RIGHT_CARROT" ]
],
QUOTE: [
- ["'","SINGLE_QUOTE_MAGIC_OR_TEXT","'"],
- ['"',"DOUBLE_QUOTE_MAGIC_OR_TEXT",'"']
+ [ "'", "SINGLE_QUOTE_MAGIC_OR_TEXT", "'" ],
+ [ "\"", "DOUBLE_QUOTE_MAGIC_OR_TEXT", "\"" ]
],
SINGLE_QUOTE_MAGIC_OR_TEXT: [
- ["NOT_MAGIC_OR_SINGLE"],
- ["NOT_MAGIC_OR_SINGLE","SINGLE_QUOTE_MAGIC_OR_TEXT" ],
- ["MAGIC"],
- ["MAGIC", "SINGLE_QUOTE_MAGIC_OR_TEXT"]
+ [ "NOT_MAGIC_OR_SINGLE" ],
+ [ "NOT_MAGIC_OR_SINGLE", "SINGLE_QUOTE_MAGIC_OR_TEXT" ],
+ [ "MAGIC" ],
+ [ "MAGIC", "SINGLE_QUOTE_MAGIC_OR_TEXT" ]
],
DOUBLE_QUOTE_MAGIC_OR_TEXT: [
- ["NOT_MAGIC_OR_DOUBLE"],
- ["NOT_MAGIC_OR_DOUBLE","DOUBLE_QUOTE_MAGIC_OR_TEXT" ],
- ["MAGIC"],
- ["MAGIC", "DOUBLE_QUOTE_MAGIC_OR_TEXT"]
+ [ "NOT_MAGIC_OR_DOUBLE" ],
+ [ "NOT_MAGIC_OR_DOUBLE", "DOUBLE_QUOTE_MAGIC_OR_TEXT" ],
+ [ "MAGIC" ],
+ [ "MAGIC", "DOUBLE_QUOTE_MAGIC_OR_TEXT" ]
],
MAGIC_OR_TEXT: [
- ["TEXT"],
- ["TEXT","MAGIC_OR_TEXT" ],
- ["MAGIC"],
- ["MAGIC", "MAGIC_OR_TEXT"]
+ [ "TEXT" ],
+ [ "TEXT", "MAGIC_OR_TEXT" ],
+ [ "MAGIC" ],
+ [ "MAGIC", "MAGIC_OR_TEXT" ]
],
MAGIC: [
- ["{", "NOT_END_MAGIC", "}"],
+ [ "{", "NOT_END_MAGIC", "}" ]
],
TEXT: [
- ["SPACE"],
- ["SPACE", "TEXT"],
- ["NOT_SPACE"],
- ["NOT_SPACE", "TEXT"]
+ [ "SPACE" ],
+ [ "SPACE", "TEXT" ],
+ [ "NOT_SPACE" ],
+ [ "NOT_SPACE", "TEXT" ]
]
}
};
@@ -106,30 +106,31 @@ var grammar = {
Once you built your grammar, build a parser like:
```js
-var parse = require("can-parse");
+import parse from "can-parse";
-var parser = parse(grammar);
+const parser = parse( grammar );
```
Then parse something:
```js
-parser("" ,function(token, expressions){
- token //-> { lex: "<", match: "<", index: 0 }
- expressions.end // -> []
- expressions.start
+parser( "", function( token, expressions ) {
+ token; //-> { lex: "<", match: "<", index: 0 }
+ expressions.end; // -> []
+ expressions.start;
+
// ->[
- // {
- // "expression": "EXPRESSION",
- // "ruleIndexes": [ 0, 3 ]
- // },
- // {
- // "expression": "TAG",
- // "ruleIndexes": [ 0, 1, 2, 3, 4, 5]
- // }
+ // {
+ // "expression": "EXPRESSION",
+ // "ruleIndexes": [ 0, 3 ]
+ // },
+ // {
+ // "expression": "TAG",
+ // "ruleIndexes": [ 0, 1, 2, 3, 4, 5]
+ // }
// ]
-});
+} );
```
The `parser` function takes: