@@ -7,6 +7,7 @@ function SPEG() {
7
7
this . parser = new SPEG_parser ( ) ;
8
8
this . visitor = new SPEG_actions_visitor ( ) ;
9
9
this . speg_parser = null ;
10
+ this . state = null ;
10
11
}
11
12
12
13
SPEG . prototype . parse_grammar = function ( grammar ) {
@@ -24,12 +25,12 @@ SPEG.prototype.parse_text = function(text) {
24
25
var rules = this . speg_parser . children ;
25
26
var first_rule = rules [ 0 ] ;
26
27
var first_rule_parser = first_rule . parser ;
27
- var state = { text : text , position : 0 , rules : rules } ;
28
- var ast = first_rule_parser ( state ) ;
28
+ this . state = { text : text , position : 0 , rules : rules } ;
29
+ var ast = first_rule_parser ( this . state ) ;
29
30
if ( ast ) {
30
31
return ast ;
31
32
} else {
32
- throw new ex . TextParseError ( 'Failed to parse text: \n\n' + rd . get_last_error ( state ) )
33
+ throw new ex . TextParseError ( 'Failed to parse text: \n\n' + rd . get_last_error ( this . state ) )
33
34
}
34
35
} else {
35
36
throw Error ( 'You need grammar to parse text. Call parseGrammar first' ) ;
@@ -43,12 +44,12 @@ SPEG.prototype.parse = function(grammar, text) {
43
44
var rules = generated_parser . children ;
44
45
var first_rule = rules [ 0 ] ;
45
46
var first_rule_parser = first_rule . parser ;
46
- var state = { text : text , position : 0 , rules : rules } ;
47
- var ast = first_rule_parser ( state ) ;
47
+ this . state = { text : text , position : 0 , rules : rules } ;
48
+ var ast = first_rule_parser ( this . state ) ;
48
49
if ( ast ) {
49
50
return ast ;
50
51
} else {
51
- throw new ex . TextParseError ( 'Failed to parse text: \n\n' + rd . get_last_error ( state ) )
52
+ throw new ex . TextParseError ( 'Failed to parse text: \n\n' + rd . get_last_error ( this . state ) )
52
53
}
53
54
} else {
54
55
throw new ex . GrammarParseError ( 'Failed to parse grammar: \n\n' + this . parser . get_last_error ( ) )
0 commit comments