ã»ãã³ãã£ãã¯ã¢ã¯ã·ã§ã³ã®çç¥åœ¢ãè¿œå ãããšäŸ¿å©ã§ãã
ããšãã°ã { return value }
ãæžã蟌ã代ããã«ãããšãã°åæååã§å®çŸ©ãããŠãã{ extract }
ãèšè¿°ããŸãã
äŸãã°ïŒ
{
function extract(value) {
return value;
}
function concat(head, tail) {
return head ? [head].concat(tail) : [];
}
function toAddExpr(head, tail) {
return { type: 'addExpr', expressions: concat(head, tail) };
}
}
List
= '(' _ head:Item? tail:( _ ',' _ value:Item { extract } )* _ ')' { concat }
// Another kind of list
Add
= '(' _ head:Multiply? tail:( _ '+' _ value:Multiply { extract } )* _ ')' { toAddExpr }
ãŸããããã«ããé¢æ°ãåå©çšã§ããããã«ãªããŸã...ããè¯ãæ¹æ³ã§ïŒsmileïŒ
第äºã«ãããã¯ç§ãã¡ã®ææ³ãããå°ãèªã¿ãããããŸãã
ã¢ã¯ã·ã§ã³ã®çç¥åœ¢ã«å«ãŸããåŒããåãªãèå¥å{ foo }
ã§ã¯ãªããã¡ã³ããŒåŒ{ foo.bar.baz }
ããå Žåã«ãããã䟿å©ã«ãªããšæããŸãã ææ³ã®äœæè
ããªããžã§ã¯ããŸãã¯ã¢ãžã¥ãŒã«å
ã§æ©èœãæŽçã§ããããã«ããŸãã
èå³æ·±ãã¢ã€ãã¢ã§ãããã©ã®åŒæ°ãé¢æ°ã«æž¡ãããŠããã®ããæ確ã§ãªããããå人çã«ã¯ãããããæ確ãªæ¹æ³ã«ãªããšã¯æããŸããã ãŸãããã«ã¹ã¿ã ããã©ã¡ãŒã¿ãŒãæž¡ãå¿ èŠãããå Žåã¯ãããããéåžžã®é¢æ°åŒã³åºããšçµã¿åãããå¿ èŠããããããåçŽãªå Žåã»ã©ãããã«èŠããŸããã
ïŒ235ã®èª°ãããç¢å°é¢æ°ãšäžç·ã«æ§æ=>
ãææ¡ããŸããããããã¯éåžžã«ã¯ãªãŒã³ã§ç°¡æœã ãšæããŸããã
= '(' expr:some_expression ')' => expr
;
ç§ã¯éèšæ§æã®ããã«æ¬¡ã®ãããããéžæããããšã«åŸããŠããŸãïŒ
=> expr;
_ïŒæ§æã®ãµããŒããå¿
èŠïŒ_{ => expr }
_ïŒçŸåšäœ¿çšå¯èœã§ãããé梱ãå¿
èŠã§ãïŒ_{ > expr }
_ïŒæ§æã®ãµããŒããå¿
èŠïŒ_ãŸã 決ããŠããªãã®ã§ãè°è«ã®äœå°ããããŸãã
OPãå¿ èŠãšãããã®ã«ã€ããŠã¯ãAcornãŸãã¯@ babel / parserã䜿çšããŠèå¥åãŸãã¯ã¡ã³ããŒåŒãã¢ã³ã©ãããããããåŒã³åºãåŒã«å€æãããã©ã°ã€ã³ãå®è£ ããã®ãæåã§ãïŒçç¥æ§æã決å®ãããåŸãŸãã¯åã«ïŒãåŒæ°ãšããŠã©ãã«ãä»ããçæãããã³ãŒããè¿ããŸãã
=> expr;
ç§ã®æèŠã§ã¯æé«ã§ãã
{ => expr }
Javascriptæ§æIMOãšã®ç«¶åã {
}
ã«ããã®ã§ãå®å
šãªç¢å°é¢æ°ïŒ () =>
ïŒã§ããããšãæåŸ
ãããŸãã
{ > expr}
PegJSãŸãã¯Javascriptã®ä»ã®æ§æãšå°ãçŽäº€ããŠããããããããã¯å€ãè¿ããçç¥åœ¢ãã®IMOãããã«ã¯èªã¿åããŸãããäž»ã«äžæ¬åŒ§ã§å²ãŸããŠããããã§ãã {=> expr}
ãšåãåŒæ°ã§ãJavascriptãããã«ããããšãæåŸ
ããŸãã
ããã«ã {}
éJSæ§æãè¿œå ããããšã¯ãæ§æãã€ã©ã€ã¿ãŒããªã³ã¿ãŒãªã©ã«ãšã£ãŠåé¡ã§ããç§ã¯ããããå§ãããŸããã
ããã«å¥ã®ãªãã·ã§ã³ãææ¡ããå Žåã¯ããããã>
èªäœïŒè¿°èªãããã¯å
ã§ã¯ãªãïŒã§ãã ããã¯ãã«ãŒã«ãåçŽæ¹åã«é
眮ãããšãã«ãç©äºãæŽåãããã®ã«åœ¹ç«ã¡ãŸãã
= foo:bar qux:(' '+ @qix)+
> {foo, qux}
;
ã€ã³ã©ã€ã³ã ãã§ãªã
some_rule = foo:bar qux:(' '+ @qix)+ > {foo, qux};
'=>'ã«ã»ãã³ãã³ãå¿ èŠãªã®ã¯ãªãã§ããïŒ ããšãã°ãbuildListïŒïŒã䜿çšãã代ããã«ããã¹ããããã³ãŒãã§å€ãè¿ãããã®ã§ããã
= "(" _ head:Expression _ tail:("," _ expr:Expression => expr)* ")" {
return [head, ...tail]
}
ç§ã¯ãããéæ³ã®ã€ã³ããã¯ã¹ïŒäžèšïŒã䜿çšããããããããã ãšæããŸãã ãã1ã€ã®ãªãã·ã§ã³ã¯ããã¹ããããã©ãã«ãåç
§ããæ©èœã§ãã äŸïŒ ("," _ tail:Expression)* ")"
= "(" _ head:Expression _ tail:("," _ Expression)* ")" {
return buildList(head, tail, 2)
}
parser.pegjsãèŠãŠããŸãããã434è¡ç®ãããã«CodeBlockãããããšãããããŸããã ãããè©Šãããã«äœãããå¿ èŠããããŸããïŒ ã«ãŒã«ã³ãŒãã¯åã«SourceCharacterãèªã¿åããŸããããã¯åã«ãããã§ãã
CodeBlock "code block"
= "=>" __ <strong i="13">@Code</strong> // this?
/ "{" <strong i="14">@Code</strong> "}"
@mikeaustinããããã®éãã§ããããã®ã·ãŒã±ã³ã¹ãã©ãã§çµäºããããç¥ãæ¹æ³ããªãããã =>
åŸã«evrythingãæ¶è²»ããŸã
ãã¶ãããã³ãŒããã¯å°ãè³¢ããè§ãã£ããšäžæ¬åŒ§ã®ãã©ã³ã¹ãåããLineTerminatorãåŠçããããšãã§ããŸããïŒ å®å šãªJavaScriptã«ã€ããŠç¥ãå¿ èŠã¯ãããŸããããããã¯æã£ãããé£ãããããããŸããã
å®éãç§ã¯èããŠããŸãããããããã®å€æŽã¯ããŸããããããããŸããïŒ
CodeBlock "code block"
= "=>" _ expession:CallExpression {
return `return ${ expession };`;
}
/ "{" <strong i="6">@Code</strong> "}"
/ "{" { error("Unbalanced brace."); }
// Will be based on ECMAScript's CallExpression
CallExpression
= ...
/ MemberExpression
// Will be based on ECMAScript's MemberExpression
MemberExpression
= ...
/ ValidIdentifier
// Change `LabelIdentifier` into `ValidIdentifier`
ãã®æ¹æ³ã§ããåŒæ°ãšããŠäœ¿çšããECMAScriptã®ãã©ã€ããªåŒïŒæ°å€ãããŒã«å€ãé åãªã©ïŒãªã©ãçµ±åããå¿ èŠããããããäœãè¿œå ããããæ éã«æ€èšããå¿ èŠããããŸãã
ãã©ã±ãããšãã¬ãŒã¹ã®ãã©ã³ã¹ããšã
ããã¯ãé©åãªJavaScriptããŒãµãŒãPEG.jsããŒãµãŒã«çµã¿èŸŒãŸãããŸã§ä¿®æ£ãããŸããããä»ã®èšèªïŒCãPHPãTypeScriptïŒã§ããŒãµãŒãçæãããã©ã°ã€ã³ãããžã§ã¯ããããã€ããããããæ£çŽãªãšãããããã«ã€ããŠã¯å°ãèºèºããŠããŸãããªã©ïŒããããŠç§ã¯ãŸãããã€ãããŒãµãŒãçæããããšæã£ãŠããã³ã³ãã¥ãŒã¿ãŒèšèªã«åãçµãã§ããŸãã
_PEG.js v0.12_ãšäžç·ã«ãOpenPEGã«åãçµãã§ããŸããããã¯ãJavaScriptãããŒãµãŒã®çæã䌎ããªãåºæ¬çã«PEG.jsã®ç°¡ç¥çã§ããNPMããã±ãŒãžãæäŸããŸãããJavaScriptããŒã¹ã®ãããžã§ã¯ããPEG.jsã¯ãããããã¯ãšã³ããšããŠäœ¿çšã§ããŸãã _v0.12_ãåºãããã«ã¹ã¿ã ããŒãµãŒãçæãããã©ã°ã€ã³ãããžã§ã¯ãã«OpenPEGãéç¥ãããããã«ããv1ã®åã«å®å šãªECMAScript2015ããŒãµãŒãPEG.jsææ³ããŒãµãŒã«å®è£ ããŸãã
FWIWãç§ã¯ããã«ãã³ãã¬ãŒããªãã©ã«ã䜿ãå§ããŸããã ãŸããããã¹ããšãã£ã¿ã«ããJSã®æ§æã®åŒ·èª¿è¡šç€ºã«ã圹ç«ã¡ãŸã...
exports = module.exports = functionBodies`${grammarScript}
...
objectText =
head:word
rest:(_txt_ word)*
${f=>{
return new Txt(rest.reduce((a,b)=>([...a,...b]),[head]))
}}
word = ch:(wordCharacter/escapedCharacter)+ ${chJoin}
...
`
function functionBodies(glue, ...fns){
return glue.map( (str,i) => str + (fns[i]||'').toString().replace(/^[^{]*/,'').replace(/[^}]*$/, '') ).join('')
}
function chJoin(ch){return ch.join('')}
ææ¡ããããã€ãæŒç®åïŒhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Pipeline_operatorïŒã䜿çšããã®ã¯ã©ãã§ããïŒ åºæ¬çã«ãããŒã¿ããã€ãããããã«æ±ããŠããã®ã§ããïŒ
{
function extract(value) {
return value;
}
function concat(head, tail) {
return head ? [head].concat(tail) : [];
}
function toAddExpr(head, tail) {
return { type: 'addExpr', expressions: concat(head, tail) };
}
}
List
= '(' _ head:Item? tail:( _ ',' _ value:Item |> extract )* _ ')' |> concat
// Another kind of list
Add
= '(' _ head:Multiply? tail:( _ '+' _ value:Multiply |> extract )* _ ')' |> toAddExpr
ããã¯èµ·ãããªãã¯ãã§ãã çãæ§æããã£ãŠã¯ãªããŸããã
ç¢å°ã暪åãã«ã·ã ããããšããã®ã§ã¯ãªããéåžžã©ããã«ç¢å°ã解æããå Žåã¯ãããã¯å¿ èŠãããŸããã
ããã¯çŽ æŽãããã¢ã€ãã¢ã§ãããJavaScriptãšæ¯èŒããŠææ³ã®ãããŸããã倧ãããªããŸãã JSã解æãã with
倧倱æãäœã§ãã£ãããèŠããŠãã人ãªã誰ã§ãããããåºæ¬çã«ããŒãµãŒã殺害ããããšãç¥ã£ãŠããŸãã
掟æãªæ°ãããã®ãäœæããããšããã®ã§ã¯ãªããJavascriptããµããŒãããå¿ èŠããããŸãã ç¢å°æ©èœã¯ES6ããå€ããES6ã¯2015幎ã®ãã®ã§ããããã¯6幎åã«è§£æ±ºãããŸããã ããã§ã¯çºæã¯èµ·ãããªãã¯ãã§ãã
ãã€ãæŒç®åã«ã¯ã²ã©ãæ¬ é¥ããããããããå®éã«ã¯Javascriptã«çµã¿èŸŒãŸãããå ã ã®èšèªïŒFïŒïŒãšãããæ®åãããèšèªïŒElixirïŒã®äž¡æ¹ãããããé ããã£ãŠããŸãã ãã®äžãããã¯ãããªãæå³ã§ãé 管ã§ã¯ãããŸããã
PEGãéåžžã«æåããçç±ã¯ãPEGãæå°éã§ãããèšèªã«è¿ããŸãŸã§ãããé«éãå°åãããã³äºæž¬å¯èœã§ããããã§ãã
ç¢å°æ©èœã¯ES6ããå€ããES6ã¯2015幎ã®ãã®ã§ããããã¯6幎åã«è§£æ±ºãããŸããã ããã§ã¯çºæã¯èµ·ãããªãã¯ãã§ãã
ãããšã ããã¯ç§ã«ãšã£ãŠã®ãã¥ãŒã¹ã§ãã æ¡å€§ããæ°ã§ããïŒ
PEGãéåžžã«æåããçç±ã¯ãPEGãæå°éã§ãããèšèªã«è¿ããŸãŸã§ãããé«éãå°åãããã³äºæž¬å¯èœã§ããããã§ãã
PEGïŒãã®ã©ã€ãã©ãªã§ã¯ãªãæŠå¿µãšããŠïŒãæåããçç±ã¯ãè€éãªææ³ïŒååž°ãªã©ïŒãåçŽãªæ¹æ³ã§è¡šçŸã§ããããã§ãã Packratã¯ãã®ã©ã€ãã©ãªã§çºæããããã®ã§ã¯ãããŸããã æ§æã§ã¯ãããŸããã ããã¯ã¢ã«ãŽãªãºã ã§ãã
ç¢å°æ©èœã¯ES6ããå€ããES6ã¯2015幎ã®ãã®ã§ããããã¯6幎åã«è§£æ±ºãããŸããã ããã§ã¯çºæã¯èµ·ãããªãã¯ãã§ãã
ãããšã ããã¯ç§ã«ãšã£ãŠã®ãã¥ãŒã¹ã§ãã æ¡å€§ããæ°ã§ããïŒ
ç§ã¯ããªããäœãæ±ããŠããã®ãæ¬åœã«ããããŸããã
ç¢å°é¢æ°ã¯ES6ããå€ãã§ãã ããã¯ES6ã§2çªç®ã«å€§ããªæŠãã§ãããES4ãçããããã®ããããŠES5 +ãçããããã®ã§ãã ãã®æç¹ã§ã90幎代åã°ããã誰ããããããæ±ããŠããŸããããªããªãããããã¯å®éã«ã¯E4Xã«ãã§ã«ååšããŠããããã§ãããGoogleãšAppleãMicrosoftããããŸã§ã«äœããçºæããããšã«ã€ããŠHixieã«é©åããããã«åãäžããããŸããã
ããªãã¯ä»E4XãReactãšããŠç¥ã£ãŠãããFacebookããããçºæãããšæããŸãã Facebookã¯åœŒããHyperscriptãã¯ãåã£ããšèããŠããŸãã Hyperscriptã®ç·ã¯ã圌ãå€ãIEããæçšãªãã®ãåå®è£ ããã ãã§ããããšãæ確ã«ããŠããŸãã
ãã³ãã¬ãŒãæååãšåãããã«ãES6ããå®å šã«é€å€ãããäºå®ã§ããããCoffeescriptãç»å ŽããJSã³ãã¥ããã£ã«äž¡æ¹ãæäŸãããã®åŸJSã³ãã¥ããã£ã¯ECMAã®äººã ãæ鳎ããŸã§æ鳎ããŸããã ãã£ã18ã¶æããããããŸããã§ãã
ç¢å°é¢æ°ã¯ãããã§çºçããå¿ èŠããããã¹ãŠã®ããšãå®è¡ããŸãã ããªãã¯2018幎ã«ãã®ã¹ã¬ããã§åœŒããè²ãŠã人ã§ããããããã§ããããã¯ããªãã®æèŠã®äžäžèŽãéåžžã«é©ãã¹ããã®ã«ããŸãã ç§ã¯ããªããããã¯ã¢ããããããšããŠããŸããã
ç§ã«ãšã£ãŠãã£ãšéèŠãªããšã¯ããããç¢å°é¢æ°ã§è¡ãããå Žåãäœãè¿œå ãããŠããªããšããããšã§ãã
ãã°ãšJSã®éãã¯ãããããã§ãã ES6ãå®è¡ããã ãã§ããããµããŒããããšããããšã¯ããªã¹ããå€æŽãããªãããšãæå³ããŸãã
ããã¯éåžžã«äŸ¡å€ããããŸãã
PEGïŒãã®ã©ã€ãã©ãªã§ã¯ãªãæŠå¿µãšããŠïŒãæåããçç±ã¯ãè€éãªææ³ïŒååž°ãªã©ïŒãåçŽãªæ¹æ³ã§è¡šçŸã§ããããã§ãã
åæããŸããã å€ãã®ããŒãµãŒã¯ãããã¯ããã«äžæãããªãããããã«ã€ããŠç¥ã£ãŠãã人ã ïŒEarleyã®ãããªïŒã§ãããå°ãã§ã人æ°ããããŸããã
åŸæ¥ã®èª¬æã¯ãšã©ãŒã¡ãã»ãŒãžã®å質ãšé床ã®çµã¿åããã§ãããå€ãã®ããŒãµãŒã¯ããé«éãªãšã©ãŒã¡ãã»ãŒãžãæã£ãŠããïŒãããEarleyã®ããã«ïŒã人ã ã®éã§ãå°ãã§ã人æ°ããªããããç§ãããã«åæããŸããããããã«ã€ããŠç¥ã£ãŠãã人
ãŸããPEGã«ã¯3ã€ã®æ·±å»ãªè€éãã®äžéãããããšã«æ³šæããŠãã ããã
1ã€ã¯ããã°ææ³ã䜿çšããå Žåã¯ãããŒã«ã«ãã·ã³ã®ãã£ãã·ã¥ãšè©äŸ¡ã¹ã«ãŒããããå§åããªãçµã¿åããåŒã䜿çšããå¿ èŠããããŸãïŒäŸïŒ623ïŒ
2ã€ç®ã¯ãBNFã®è§£æãªã©ãå€ãã®äžè¬çãªäœæ¥ããã°ã§æ®é ·ã«å°é£ãªå Žåãå€ãããšã§ãïŒäŸïŒ489ïŒ
3ã€ç®ã¯ãä»ã®ãã¹ãŠã®JS PEGã©ã€ãã©ãªãŒãããã«ã¯ã¯ããã«åŒ·åãªã©ã€ãã©ãªãŒã倱æããããšã§ãã ç§ã¯äœåºŠãåãæ¿ããããšããŸããããæ»ã£ãŠããŸããã ç¹ã«ã c
ã ruby
ãããã³python
ãè¿œå ã§ã¿ãŒã²ããã«ã§ãããããäœåºŠãcanopy
ã«åãæ¿ããããšããŸããã javascript
確ãã«ãç§ã話ãããšãã§ããã®ã¯ãããã䜿çšããŠããç§ãç¥ã£ãŠãã20人ã»ã©ã®äººã ã ãã§ãã ãããŠãæ°æ¥åã«å°ããã®ã§ãäœå¹Žã«ãããã£ãŠå ¬éãããå€æŽããªãã£ãåŸãæ°ããéä¿å®è ããœãããŠã§ã¢ãç Žæ£ãã圌ããŒãããäœæãããã®ãšäº€æããŠããããšã«æ°ä»ãããšããç§ã¯ã§ããŸã
ãããã圌ãã®äžäººäžäººãç§ã«ããã€ãã£ãã®æŠå¿µçãªãªãŒããŒããããããŸããªãããŒãµãŒãå¿ èŠã§ããããåäœãä¿¡é Œã§ããé«éã§å°ããªãã®ãå¿ èŠã§ãããšèšããŸãã
ãªãªãŒã¹ãããŠããªã0.11ã¯ãããŒããšã¯ãã ã§æå³ã®ããåäœãç°ãªããããŒãã¯ã¯ãã ã§ã§ããŠããŸãã ããã«å¯ŸããŠããã€ãã®ããããã£ãã¹ããæžããŠã¿ãŠãã ããã æ£çŽãªãšãããæãããããšã§ãã
ã
Packratã¯ãã®ã©ã€ãã©ãªã§çºæããããã®ã§ã¯ãããŸããã æ§æã§ã¯ãããŸããã ããã¯ã¢ã«ãŽãªãºã ã§ãã
åéã®Packratã«ã€ããŠã¯äœãèšããªãã£ãã äœãä¿®æ£ããããšããŠããã®ãããããŸããã
ãã ãããœãŒããã¢ã«ãŽãªãºã ã§ã¯ãªãã®ãšåãçç±ã§ãPackratã®è§£æã¯ã¢ã«ãŽãªãºã ã§ã¯ãããŸããã Packratã®è§£æã¯ã¿ã¹ã¯ã§ããããããå®è¡ããæ¹æ³ã¯ãããããããŸãã
å®éãã»ãšãã©ã®Intro Haskellã®æ¬ã§ã¯ã3ã€ãŸãã¯4ã€ã®ç°ãªãpackratããŒãµãŒãå®è¡ã§ããŸããããã¯ãhaskellã®ã¢ãããžã®ã¢ãããŒãã®ããã©ãŒãã³ã¹ã®åé¡ã«å®éã«å€¢äžã«ãªãããã®åªããæ¹æ³ã§ãããæžã蟌ã¿ãžã®ã¢ãããŒããã©ã®ããã«å€æŽãããã瀺ãããããã§ãã packratsïŒã€ãŸããã¢ã«ãŽãªãºã ã®å€æŽïŒã¯ãããè¯ãçµæããããããŸãã
ã
芪æãäžã«åããŠèãçŽããŠãã ããã ãã®å³æžé€šã¯3幎åã«äº¡ããªããŸããããä»ãã埩掻ãããããšæããŸãã
ã©ã€ãã©ãªãæ»ãã§ããçç±ã®äžéšã¯ã人ã
ã2幎ééçºã«çœ®ãããŠãães()
ã¢ãžã¥ãŒã«é¢æ°ãè¿œå ãããªã©ã®åçŽãªã¡ã³ããã³ã¹ãå®è¡ããã®ã§ã¯ãªããæ©èœãã°ãªãŒã³ãã£ãŒã«ãã§çºæããããšãç¶ããããšã§ãã
è¡ãåãåããææžãã®JavaScriptãããããã¹ã§çããŠãPEGããŒãµãŒãæåã§å€æŽããå¿ èŠããããŸãã
æ空ã®ç®ãå°ãéããŠãå®çšçãªèã£ããèãå§ãŸãã¯ãã§ãã PEGã¯ã䜿çšãæžå°ããŠããã®ãç§ãä»ãŸã§èŠãäžã§å¯äžã®äž»èŠãªNPMã©ã€ãã©ãªã§ãã ç§ãåççãªä»£æ¿åãç¥ããªãããšãèãããšãããã¯ç§ã«ãšã£ãŠå¥åŠã§æ··ä¹±ãæããŸãã
ä»ããæçš¿ããããã°ä¿®æ£ããããŸãããæçš¿ã§ããŸããã
0.10
ã¯ãdmajdaãå»ã£ãŠããå
¬éãããŠããŸãããã0.11
ã¯3æ³ã§ãå
¬éãããããšããªãã1ãæåã«å
¬éãããããšã¯ãªããšçºè¡šãããŸããã0.12
ã¯ãã°ã§ã¯ãããŸããããä»ã®äººãå¥ã®ããã°ã©ãã³ã°èšèªã§æåããæžãããã®ã§ããã誰ããããèŠãããšãã§ããŸãããç§ã¯ããã倱瀌ã§ããããšãç¥ã£ãŠããŸãããããç§ãã¡ã¯ãã®å³æžé€šã殺ãããŠããããšã«çŽé¢ããå¿ èŠããããŸã
ãã®ã©ã€ãã©ãªãåã³æŽæ°ã確èªããå Žåã¯ãéåžžã®éçºããã»ã¹ãåãå ¥ããå¿ èŠãããããšã«çŽé¢ããæãæ¥ãŸããã 2020幎ã§ãã2017幎以æ¥äœãèŠãŠããŸããã
ããããdevãã©ã³ãã¯ã«ãŠã³ããããŸããã ãŸãã 0.11
ã¯ååãªå質ã§ã¯ãªãã 10
ããããçŽãæ¹ãã 11
ä¿®æ£ãããããã¯ããã«å°ãªãäœæ¥ã§ãããããæ°ããã¡ã³ããã¯å€ãã®åé¡ãåéããå¿
èŠ11
æãåèã«ãªãã³ã¡ã³ã
å®éãç§ã¯èããŠããŸãããããããã®å€æŽã¯ããŸããããããããŸããïŒ
ãã®æ¹æ³ã§ããåŒæ°ãšããŠäœ¿çšããECMAScriptã®ãã©ã€ããªåŒïŒæ°å€ãããŒã«å€ãé åãªã©ïŒãªã©ãçµ±åããå¿ èŠããããããäœãè¿œå ããããæ éã«æ€èšããå¿ èŠããããŸãã
ããã¯ãé©åãªJavaScriptããŒãµãŒãPEG.jsããŒãµãŒã«çµã¿èŸŒãŸãããŸã§ä¿®æ£ãããŸããããä»ã®èšèªïŒCãPHPãTypeScriptïŒã§ããŒãµãŒãçæãããã©ã°ã€ã³ãããžã§ã¯ããããã€ããããããæ£çŽãªãšãããããã«ã€ããŠã¯å°ãèºèºããŠããŸãããªã©ïŒããããŠç§ã¯ãŸãããã€ãããŒãµãŒãçæããããšæã£ãŠããã³ã³ãã¥ãŒã¿ãŒèšèªã«åãçµãã§ããŸãã
_PEG.js v0.12_ãšäžç·ã«ãOpenPEGã«åãçµãã§ããŸããããã¯ãJavaScriptãããŒãµãŒã®çæã䌎ããªãåºæ¬çã«PEG.jsã®ç°¡ç¥çã§ããNPMããã±ãŒãžãæäŸããŸãããJavaScriptããŒã¹ã®ãããžã§ã¯ããPEG.jsã¯ãããããã¯ãšã³ããšããŠäœ¿çšã§ããŸãã _v0.12_ãåºãããã«ã¹ã¿ã ããŒãµãŒãçæãããã©ã°ã€ã³ãããžã§ã¯ãã«OpenPEGãéç¥ãããããã«ããv1ã®åã«å®å šãªECMAScript2015ããŒãµãŒãPEG.jsææ³ããŒãµãŒã«å®è£ ããŸãã