@@ -35,40 +35,37 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
36
36
exports . withLoc = exports . where = exports . debug = exports . eof = exports . lookNeg = exports . lookPos = exports . opt = exports . plus = exports . fail = exports . eps = exports . any = exports . star = exports . ref = exports . app = exports . stry = exports . regex = exports . sat = exports . str = exports . alt = exports . field = exports . seq = exports . right = exports . left = exports . ap = exports . pure = exports . rule = void 0 ;
37
37
const P = __importStar ( require ( "./runtime" ) ) ;
38
- const range = ( start , end ) => ( { $ : 'range' , start, end } ) ;
39
- const empty = ( at ) => ( { $ : 'empty' , at } ) ;
40
- const isEmpty = ( loc ) => loc . $ === 'empty' ;
41
- const span = ( left , right ) => {
42
- return isEmpty ( left ) ? right : isEmpty ( right ) ? left : range ( left . start , right . end ) ;
43
- } ;
38
+ const L = __importStar ( require ( "./loc" ) ) ;
44
39
const terminal = ( p ) => c => {
45
40
const start = c . p ;
46
41
const r = p ( c ) ;
47
42
if ( P . isFailure ( r ) )
48
43
return P . failure ;
49
- return P . success ( [ P . getSuccess ( r ) , range ( start , c . p ) ] ) ;
44
+ return P . success ( [ P . getSuccess ( r ) , L . rangeLoc ( start , c . p ) ] ) ;
50
45
} ;
51
46
const rule = ( child ) => ( ctx ) => {
52
47
const result = child ( ctx ) ;
53
48
return result ;
54
49
} ;
55
50
exports . rule = rule ;
56
- const pure = ( t ) => terminal ( P . pure ( t ) ) ;
51
+ const pure = ( t ) => ctx => {
52
+ return P . app ( P . pure ( t ) , t => [ t , L . emptyLoc ( ctx . p ) ] ) ( ctx ) ;
53
+ } ;
57
54
exports . pure = pure ;
58
55
const ap = ( left , right ) => {
59
- return P . app ( P . seq ( left , right ) , ( [ [ f , l ] , [ x , r ] ] ) => [ f ( x ) , span ( l , r ) ] ) ;
56
+ return P . app ( P . seq ( left , right ) , ( [ [ f , l ] , [ x , r ] ] ) => [ f ( x ) , L . mergeLoc ( l , r ) ] ) ;
60
57
} ;
61
58
exports . ap = ap ;
62
59
const left = ( left , right ) => {
63
- return P . app ( P . seq ( left , right ) , ( [ [ t , l ] , [ , r ] ] ) => [ t , span ( l , r ) ] ) ;
60
+ return P . app ( P . seq ( left , right ) , ( [ [ t , l ] , [ , r ] ] ) => [ t , L . mergeLoc ( l , r ) ] ) ;
64
61
} ;
65
62
exports . left = left ;
66
63
const right = ( left , right ) => {
67
- return P . app ( P . seq ( left , right ) , ( [ [ , l ] , [ u , r ] ] ) => [ u , span ( l , r ) ] ) ;
64
+ return P . app ( P . seq ( left , right ) , ( [ [ , l ] , [ u , r ] ] ) => [ u , L . mergeLoc ( l , r ) ] ) ;
68
65
} ;
69
66
exports . right = right ;
70
67
const seq = ( left , right ) => {
71
- return P . app ( P . seq ( left , right ) , ( [ [ t , l ] , [ u , r ] ] ) => [ [ t , u ] , span ( l , r ) ] ) ;
68
+ return P . app ( P . seq ( left , right ) , ( [ [ t , l ] , [ u , r ] ] ) => [ [ t , u ] , L . mergeLoc ( l , r ) ] ) ;
72
69
} ;
73
70
exports . seq = seq ;
74
71
const field = ( left , key , right ) => {
@@ -106,12 +103,13 @@ exports.ref = ref;
106
103
const star = ( child ) => {
107
104
return P . app ( P . seq ( exports . where , P . star ( child ) ) , ( [ [ at ] , ls ] ) => [
108
105
ls . map ( ( [ t ] ) => t ) ,
109
- ls . map ( ( [ , l ] ) => l ) . reduce ( span , empty ( at ) )
106
+ ls . map ( ( [ , l ] ) => l ) . reduce ( L . mergeLoc , L . emptyLoc ( at ) )
110
107
] ) ;
111
108
} ;
112
109
exports . star = star ;
113
110
exports . any = terminal ( P . any ) ;
114
- exports . eps = terminal ( P . eps ) ;
111
+ const eps = ( ctx ) => P . success ( [ P . EPS , L . emptyLoc ( ctx . p ) ] ) ;
112
+ exports . eps = eps ;
115
113
exports . fail = P . fail ;
116
114
const plus = ( child ) => {
117
115
return ( 0 , exports . app ) ( ( 0 , exports . seq ) ( child , ( 0 , exports . star ) ( child ) ) , ( [ a , as ] ) => ( as . unshift ( a ) , as ) ) ;
@@ -121,18 +119,24 @@ const opt = (child) => {
121
119
return ( 0 , exports . alt ) ( child , ( 0 , exports . app ) ( exports . eps , ( ) => undefined ) ) ;
122
120
} ;
123
121
exports . opt = opt ;
124
- exports . lookPos = P . lookPos ;
122
+ const lookPos = ( child ) => {
123
+ const p = P . lookPos ( child ) ;
124
+ return ctx => {
125
+ return P . app ( p , ( [ t ] ) => [ t , L . emptyLoc ( ctx . p ) ] ) ( ctx ) ;
126
+ } ;
127
+ } ;
128
+ exports . lookPos = lookPos ;
125
129
const lookNeg = ( child ) => {
126
130
const p = ( 0 , exports . lookPos ) ( child ) ;
127
131
return ctx => {
128
132
const r = p ( ctx ) ;
129
- return P . isSuccess ( r ) ? P . failure : P . success ( [ undefined , empty ( ctx . p ) ] ) ;
133
+ return P . isSuccess ( r ) ? P . failure : P . success ( [ undefined , L . emptyLoc ( ctx . p ) ] ) ;
130
134
} ;
131
135
} ;
132
136
exports . lookNeg = lookNeg ;
133
137
exports . eof = ( 0 , exports . lookNeg ) ( exports . any ) ;
134
138
exports . debug = P . debug ;
135
- const where = ctx => P . success ( [ ctx . p , empty ( ctx . p ) ] ) ;
139
+ const where = ctx => P . success ( [ ctx . p , L . emptyLoc ( ctx . p ) ] ) ;
136
140
exports . where = where ;
137
141
const withLoc = ( child ) => {
138
142
return P . app ( child , ( [ t , loc ] ) => [ [ t , loc ] , loc ] ) ;
0 commit comments