Fix bug in javascript automatic semicolon insertion rule

db4
Chris Double 2008-06-19 01:39:51 +12:00
parent d58a085598
commit d5e5e47944
2 changed files with 13 additions and 1 deletions

View File

@ -35,3 +35,14 @@ function foldl(f, initial, seq) {
} }
"> tokenizer ast>> javascript remaining>> length zero? "> tokenizer ast>> javascript remaining>> length zero?
] unit-test ] unit-test
{ t } [
<"
ParseState.prototype.from = function(index) {
var r = new ParseState(this.input, this.index + index);
r.cache = this.cache;
r.length = this.length - index;
return r;
}
"> tokenizer ast>> javascript remaining>> length zero?
] unit-test

View File

@ -7,6 +7,7 @@ IN: peg.javascript.parser
#! http://jarrett.cs.ucla.edu/ometa-js/#JavaScript_Compiler #! http://jarrett.cs.ucla.edu/ometa-js/#JavaScript_Compiler
EBNF: javascript EBNF: javascript
End = !(.)
Space = " " | "\t" | "\n" Space = " " | "\t" | "\n"
Spaces = Space* => [[ ignore ]] Spaces = Space* => [[ ignore ]]
Name = . ?[ ast-name? ]? => [[ value>> ]] Name = . ?[ ast-name? ]? => [[ value>> ]]
@ -78,7 +79,7 @@ JsonPropName = Name | Number | String
Formal = Spaces Name Formal = Spaces Name
Formals = (Formal ("," Formal => [[ second ]])* => [[ first2 swap prefix ]])? Formals = (Formal ("," Formal => [[ second ]])* => [[ first2 swap prefix ]])?
FuncRest = "(" Formals:fs ")" "{" SrcElems:body "}" => [[ fs body ast-func boa ]] FuncRest = "(" Formals:fs ")" "{" SrcElems:body "}" => [[ fs body ast-func boa ]]
Sc = SpacesNoNl ("\n" | &("}"))| ";" Sc = SpacesNoNl ("\n" | &("}") | End)| ";"
Binding = Name:n "=" Expr:v => [[ n v ast-var boa ]] Binding = Name:n "=" Expr:v => [[ n v ast-var boa ]]
| Name:n => [[ n "undefined" ast-get boa ast-var boa ]] | Name:n => [[ n "undefined" ast-get boa ast-var boa ]]
Block = "{" SrcElems:ss "}" => [[ ss ]] Block = "{" SrcElems:ss "}" => [[ ss ]]