From 88b0d6d89e0d25114f4bc5e7251f90bb26ef6144 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Mon, 12 Feb 2018 17:12:19 -0800 Subject: [PATCH 1/3] Use const/let in sample code --- readme.md | 206 +++++++++++++++++++++++++++--------------------------- 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/readme.md b/readme.md index c758c41..18351d6 100644 --- a/readme.md +++ b/readme.md @@ -12,92 +12,92 @@ tiny (<1k `min+gip`) and fast (while being less expressive than Jison). To create a parser, first create a `grammar` with `lex`ical tokens and an expression `tree` as follows: -```js -var grammar = { - lex: { - "{": /^\{/, - "}": /^\}/, - "<": /^" : /^\/>/, - "": /^>/, - "SPACE": /^\s/, - "'": /^'/, - '"': /^"/, - "=": /^=/, - ALPHA_NUMERIC: /^[A-Za-z0-9]+/, - TAGNAME: /^[a-z][-:_A-Za-z0-9]*/, - NOT_END_MAGIC: /^([^\}]*)/, - NOT_SPACE: /^[^\s\{\}<]+/, - NOT_SPACE_RIGHT_CARROT: /^[^\s>=\{]+/, - NOT_MAGIC_OR_DOUBLE: /^[^"\{]+/, - NOT_MAGIC_OR_SINGLE: /^[^'\{]+/ - }, - tree: { - 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", "/>"] - ], - CLOSING: [ - [""], - ], - 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: [ - ["'","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"] - ], - 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"] - ], - MAGIC: [ - ["{", "NOT_END_MAGIC", "}"], - ], - TEXT: [ - ["SPACE"], - ["SPACE", "TEXT"], - ["NOT_SPACE"], - ["NOT_SPACE", "TEXT"] - ] - } +```javascript +const grammar = { + lex: { + "{": /^\{/, + "}": /^\}/, + "<": /^" : /^\/>/, + "": /^>/, + "SPACE": /^\s/, + "'": /^'/, + '"': /^"/, + "=": /^=/, + ALPHA_NUMERIC: /^[A-Za-z0-9]+/, + TAGNAME: /^[a-z][-:_A-Za-z0-9]*/, + NOT_END_MAGIC: /^([^\}]*)/, + NOT_SPACE: /^[^\s\{\}<]+/, + NOT_SPACE_RIGHT_CARROT: /^[^\s>=\{]+/, + NOT_MAGIC_OR_DOUBLE: /^[^"\{]+/, + NOT_MAGIC_OR_SINGLE: /^[^'\{]+/ + }, + tree: { + 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", "/>"] + ], + CLOSING: [ + [""], + ], + 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: [ + ["'","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"] + ], + 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"] + ], + MAGIC: [ + ["{", "NOT_END_MAGIC", "}"], + ], + TEXT: [ + ["SPACE"], + ["SPACE", "TEXT"], + ["NOT_SPACE"], + ["NOT_SPACE", "TEXT"] + ] + } }; ``` @@ -105,30 +105,30 @@ var grammar = { Once you built your grammar, build a parser like: -```js -var parse = require("can-parse"); +```javascript +import parse from "can-parse"; -var parser = parse(grammar); +const parser = parse(grammar); ``` Then parse something: -```js +```javascript 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] - // } - // ] + token //-> { lex: "<", match: "<", index: 0 } + expressions.end // -> [] + expressions.start + // ->[ + // { + // "expression": "EXPRESSION", + // "ruleIndexes": [ 0, 3 ] + // }, + // { + // "expression": "TAG", + // "ruleIndexes": [ 0, 1, 2, 3, 4, 5] + // } + // ] }); ``` From 9ce56ade30890bbe0bdf7a7856dc836b9f9080ca Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Tue, 13 Feb 2018 15:29:29 -0800 Subject: [PATCH 2/3] run eslint on markdown code --- readme.md | 200 +++++++++++++++++++++++++++--------------------------- 1 file changed, 100 insertions(+), 100 deletions(-) diff --git a/readme.md b/readme.md index 18351d6..c091c3f 100644 --- a/readme.md +++ b/readme.md @@ -12,92 +12,92 @@ tiny (<1k `min+gip`) and fast (while being less expressive than Jison). To create a parser, first create a `grammar` with `lex`ical tokens and an expression `tree` as follows: -```javascript +```js const grammar = { - lex: { - "{": /^\{/, - "}": /^\}/, - "<": /^" : /^\/>/, - "": /^>/, - "SPACE": /^\s/, - "'": /^'/, - '"': /^"/, - "=": /^=/, - ALPHA_NUMERIC: /^[A-Za-z0-9]+/, - TAGNAME: /^[a-z][-:_A-Za-z0-9]*/, - NOT_END_MAGIC: /^([^\}]*)/, - NOT_SPACE: /^[^\s\{\}<]+/, - NOT_SPACE_RIGHT_CARROT: /^[^\s>=\{]+/, - NOT_MAGIC_OR_DOUBLE: /^[^"\{]+/, - NOT_MAGIC_OR_SINGLE: /^[^'\{]+/ - }, - tree: { - 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", "/>"] - ], - CLOSING: [ - [""], - ], - 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: [ - ["'","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"] - ], - 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"] - ], - MAGIC: [ - ["{", "NOT_END_MAGIC", "}"], - ], - TEXT: [ - ["SPACE"], - ["SPACE", "TEXT"], - ["NOT_SPACE"], - ["NOT_SPACE", "TEXT"] - ] - } + lex: { + "{": /^\{/, + "}": /^\}/, + "<": /^" : /^\/>/, + "": /^>/, + "SPACE": /^\s/, + "'": /^'/, + '"': /^"/, + "=": /^=/, + ALPHA_NUMERIC: /^[A-Za-z0-9]+/, + TAGNAME: /^[a-z][-:_A-Za-z0-9]*/, + NOT_END_MAGIC: /^([^\}]*)/, + NOT_SPACE: /^[^\s\{\}<]+/, + NOT_SPACE_RIGHT_CARROT: /^[^\s>=\{]+/, + NOT_MAGIC_OR_DOUBLE: /^[^"\{]+/, + NOT_MAGIC_OR_SINGLE: /^[^'\{]+/ + }, + tree: { + 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", "/>"] + ], + CLOSING: [ + [""], + ], + 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: [ + ["'","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"] + ], + 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"] + ], + MAGIC: [ + ["{", "NOT_END_MAGIC", "}"], + ], + TEXT: [ + ["SPACE"], + ["SPACE", "TEXT"], + ["NOT_SPACE"], + ["NOT_SPACE", "TEXT"] + ] + } }; ``` @@ -105,7 +105,7 @@ const grammar = { Once you built your grammar, build a parser like: -```javascript +```js import parse from "can-parse"; const parser = parse(grammar); @@ -114,21 +114,21 @@ const parser = parse(grammar); Then parse something: -```javascript +```js 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] - // } - // ] + token //-> { lex: "<", match: "<", index: 0 } + expressions.end // -> [] + expressions.start + // ->[ + // { + // "expression": "EXPRESSION", + // "ruleIndexes": [ 0, 3 ] + // }, + // { + // "expression": "TAG", + // "ruleIndexes": [ 0, 1, 2, 3, 4, 5] + // } + // ] }); ``` From d59dd6566d7853bd7ba9f3305f3e6979333ebb49 Mon Sep 17 00:00:00 2001 From: Christopher Baker Date: Tue, 13 Feb 2018 16:57:22 -0800 Subject: [PATCH 3/3] run eslint on markdown code --- readme.md | 101 +++++++++++++++++++++++++++--------------------------- 1 file changed, 51 insertions(+), 50 deletions(-) diff --git a/readme.md b/readme.md index c091c3f..2a45aca 100644 --- a/readme.md +++ b/readme.md @@ -18,12 +18,12 @@ const grammar = { "{": /^\{/, "}": /^\}/, "<": /^" : /^\/>/, - "": /^\/>/, + "": /^>/, "SPACE": /^\s/, "'": /^'/, - '"': /^"/, + "\"": /^"/, "=": /^=/, ALPHA_NUMERIC: /^[A-Za-z0-9]+/, TAGNAME: /^[a-z][-:_A-Za-z0-9]*/, @@ -35,67 +35,67 @@ const 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: [ - [""], + [ "" ] ], 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" ] ] } }; @@ -108,17 +108,18 @@ Once you built your grammar, build a parser like: ```js import parse from "can-parse"; -const 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", @@ -129,7 +130,7 @@ parser("" ,function(token, expressions){ // "ruleIndexes": [ 0, 1, 2, 3, 4, 5] // } // ] -}); +} ); ``` The `parser` function takes: