1
- var Jison = require ( "../setup " ) . Jison ,
2
- RegExpLexer = require ( "../setup" ) . RegExpLexer ,
3
- assert = require ( "assert" ) ;
1
+ var assert = require ( "chai " ) . assert ;
2
+ var Jison = require ( "../setup" ) . Jison ;
3
+ var RegExpLexer = require ( "../setup" ) . RegExpLexer ;
4
4
5
- exports [ "test Semantic action basic return" ] = function ( ) {
5
+
6
+ describe ( "Parser Actions" , function ( ) {
7
+ it ( "test Semantic action basic return" , function ( ) {
6
8
var lexData = {
7
9
rules : [
8
10
[ "x" , "return 'x';" ] ,
@@ -22,9 +24,9 @@ exports["test Semantic action basic return"] = function() {
22
24
23
25
assert . equal ( parser . parse ( 'x' ) , 0 , "semantic action" ) ;
24
26
assert . equal ( parser . parse ( 'y' ) , 1 , "semantic action" ) ;
25
- } ;
27
+ } ) ;
26
28
27
- exports [ "test return null" ] = function ( ) {
29
+ it ( "test return null" , function ( ) {
28
30
var lexData = {
29
31
rules : [
30
32
[ "x" , "return 'x';" ]
@@ -41,9 +43,9 @@ exports["test return null"] = function() {
41
43
parser . lexer = new RegExpLexer ( lexData ) ;
42
44
43
45
assert . equal ( parser . parse ( 'x' ) , null , "semantic action" ) ;
44
- } ;
46
+ } ) ;
45
47
46
- exports [ "test terminal semantic values are not null" ] = function ( ) {
48
+ it ( "test terminal semantic values are not null" , function ( ) {
47
49
var lexData = {
48
50
rules : [
49
51
[ "x" , "return 'x';" ] ,
@@ -63,9 +65,9 @@ exports["test terminal semantic values are not null"] = function() {
63
65
64
66
assert . deepEqual ( parser . parse ( 'x' ) , [ true ] , "semantic action" ) ;
65
67
assert . deepEqual ( parser . parse ( 'y' ) , [ 'y' ] , "semantic action" ) ;
66
- } ;
68
+ } ) ;
67
69
68
- exports [ "test Semantic action stack lookup" ] = function ( ) {
70
+ it ( "test Semantic action stack lookup" , function ( ) {
69
71
var lexData = {
70
72
rules : [
71
73
[ "x" , "return 'x';" ] ,
@@ -86,9 +88,9 @@ exports["test Semantic action stack lookup"] = function() {
86
88
87
89
assert . equal ( parser . parse ( 'x' ) , "EX" , "return first token" ) ;
88
90
assert . equal ( parser . parse ( 'yx' ) , "BYEX" , "return first after reduction" ) ;
89
- } ;
91
+ } ) ;
90
92
91
- exports [ "test Semantic actions on nullable grammar" ] = function ( ) {
93
+ it ( "test Semantic actions on nullable grammar" , function ( ) {
92
94
var lexData = {
93
95
rules : [
94
96
[ "x" , "return 'x';" ]
@@ -106,9 +108,9 @@ exports["test Semantic actions on nullable grammar"] = function() {
106
108
parser . lexer = new RegExpLexer ( lexData ) ;
107
109
108
110
assert . equal ( parser . parse ( 'xx' ) , "->xx" , "return first after reduction" ) ;
109
- } ;
111
+ } ) ;
110
112
111
- exports [ "test named semantic value" ] = function ( ) {
113
+ it ( "test named semantic value" , function ( ) {
112
114
var lexData = {
113
115
rules : [
114
116
[ "x" , "return 'x';" ]
@@ -126,9 +128,9 @@ exports["test named semantic value"] = function() {
126
128
parser . lexer = new RegExpLexer ( lexData ) ;
127
129
128
130
assert . equal ( parser . parse ( 'xx' ) , "->xx" , "return first after reduction" ) ;
129
- } ;
131
+ } ) ;
130
132
131
- exports [ "test ambiguous named semantic value" ] = function ( ) {
133
+ it ( "test ambiguous named semantic value" , function ( ) {
132
134
var lexData = {
133
135
rules : [
134
136
[ "x" , "return 'x';" ] ,
@@ -148,9 +150,9 @@ exports["test ambiguous named semantic value"] = function() {
148
150
parser . lexer = new RegExpLexer ( lexData ) ;
149
151
150
152
assert . equal ( parser . parse ( 'xyx' ) , "xyx" , "return first after reduction" ) ;
151
- } ;
153
+ } ) ;
152
154
153
- exports [ "test vars that look like named semantic values shouldn't be replaced" ] = function ( ) {
155
+ it ( "test vars that look like named semantic values shouldn't be replaced" , function ( ) {
154
156
var lexData = {
155
157
rules : [
156
158
[ "x" , "return 'x';" ]
@@ -168,9 +170,9 @@ exports["test vars that look like named semantic values shouldn't be replaced"]
168
170
parser . lexer = new RegExpLexer ( lexData ) ;
169
171
170
172
assert . equal ( parser . parse ( 'xx' ) , "->xx" , "return first after reduction" ) ;
171
- } ;
173
+ } ) ;
172
174
173
- exports [ "test previous semantic value lookup ($0)" ] = function ( ) {
175
+ it ( "test previous semantic value lookup ($0)" , function ( ) {
174
176
var lexData = {
175
177
rules : [
176
178
[ "x" , "return 'x';" ] ,
@@ -189,10 +191,10 @@ exports["test previous semantic value lookup ($0)"] = function() {
189
191
parser . lexer = new RegExpLexer ( lexData ) ;
190
192
191
193
assert . equal ( parser . parse ( 'xxy' ) , "xxxx" , "return first after reduction" ) ;
192
- } ;
194
+ } ) ;
193
195
194
196
195
- exports [ "test negative semantic value lookup ($-1)" ] = function ( ) {
197
+ it ( "test negative semantic value lookup ($-1)" , function ( ) {
196
198
var lexData = {
197
199
rules : [
198
200
[ "x" , "return 'x';" ] ,
@@ -213,9 +215,9 @@ exports["test negative semantic value lookup ($-1)"] = function() {
213
215
parser . lexer = new RegExpLexer ( lexData ) ;
214
216
215
217
assert . equal ( parser . parse ( 'zxy' ) , "zxz" , "return first after reduction" ) ;
216
- } ;
218
+ } ) ;
217
219
218
- exports [ "test Build AST" ] = function ( ) {
220
+ it ( "test Build AST" , function ( ) {
219
221
var lexData = {
220
222
rules : [
221
223
[ "x" , "return 'x';" ]
@@ -239,9 +241,9 @@ exports["test Build AST"] = function() {
239
241
240
242
var r = parser . parse ( "xxx" ) ;
241
243
assert . deepEqual ( r , expectedAST ) ;
242
- } ;
244
+ } ) ;
243
245
244
- exports [ "test 0+0 grammar" ] = function ( ) {
246
+ it ( "test 0+0 grammar" , function ( ) {
245
247
var lexData2 = {
246
248
rules : [
247
249
[ "0" , "return 'ZERO';" ] ,
@@ -264,9 +266,9 @@ exports["test 0+0 grammar"] = function() {
264
266
var expectedAST = [ "+" , [ "+" , [ 0 ] , [ 0 ] ] , [ 0 ] ] ;
265
267
266
268
assert . deepEqual ( parser . parse ( "0+0+0" ) , expectedAST ) ;
267
- } ;
269
+ } ) ;
268
270
269
- exports [ "test implicit $$ = $1 action" ] = function ( ) {
271
+ it ( "test implicit $$ = $1 action" , function ( ) {
270
272
var lexData2 = {
271
273
rules : [
272
274
[ "0" , "return 'ZERO';" ] ,
@@ -289,9 +291,9 @@ exports["test implicit $$ = $1 action"] = function() {
289
291
var expectedAST = [ "+" , [ "+" , [ 0 ] , [ 0 ] ] , [ 0 ] ] ;
290
292
291
293
assert . deepEqual ( parser . parse ( "0+0+0" ) , expectedAST ) ;
292
- } ;
294
+ } ) ;
293
295
294
- exports [ "test yytext" ] = function ( ) {
296
+ it ( "test yytext" , function ( ) {
295
297
var lexData = {
296
298
rules : [
297
299
[ "x" , "return 'x';" ]
@@ -308,9 +310,9 @@ exports["test yytext"] = function() {
308
310
parser . lexer = new RegExpLexer ( lexData ) ;
309
311
310
312
assert . equal ( parser . parse ( 'x' ) , "x" , "return first token" ) ;
311
- } ;
313
+ } ) ;
312
314
313
- exports [ "test yyleng" ] = function ( ) {
315
+ it ( "test yyleng" , function ( ) {
314
316
var lexData = {
315
317
rules : [
316
318
[ "x" , "return 'x';" ]
@@ -327,9 +329,9 @@ exports["test yyleng"] = function() {
327
329
parser . lexer = new RegExpLexer ( lexData ) ;
328
330
329
331
assert . equal ( parser . parse ( 'x' ) , 1 , "return first token" ) ;
330
- } ;
332
+ } ) ;
331
333
332
- exports [ "test yytext more" ] = function ( ) {
334
+ it ( "test yytext more" , function ( ) {
333
335
var lexData = {
334
336
rules : [
335
337
[ "x" , "return 'x';" ] ,
@@ -348,9 +350,9 @@ exports["test yytext more"] = function() {
348
350
parser . lexer = new RegExpLexer ( lexData ) ;
349
351
350
352
assert . equal ( parser . parse ( 'xy' ) , "xy" , "return first token" ) ;
351
- } ;
353
+ } ) ;
352
354
353
- exports [ "test action include" ] = function ( ) {
355
+ it ( "test action include" , function ( ) {
354
356
var lexData = {
355
357
rules : [
356
358
[ "y" , "return 'y';" ]
@@ -372,9 +374,9 @@ exports["test action include"] = function() {
372
374
parser . lexer = new RegExpLexer ( lexData ) ;
373
375
374
376
assert . equal ( parser . parse ( 'y' ) , 1 , "semantic action" ) ;
375
- } ;
377
+ } ) ;
376
378
377
- exports [ "test next token not shifted if only one action" ] = function ( ) {
379
+ it ( "test next token not shifted if only one action" , function ( ) {
378
380
var lexData = {
379
381
rules : [
380
382
[ "\\(" , "return '(';" ] ,
@@ -393,9 +395,9 @@ exports["test next token not shifted if only one action"] = function () {
393
395
var parser = new Jison . Parser ( grammar ) ;
394
396
parser . lexer = new RegExpLexer ( lexData ) ;
395
397
assert . ok ( parser . parse ( '(y)y' ) , "should parse correctly" ) ;
396
- } ;
398
+ } ) ;
397
399
398
- exports [ "test token array LIFO" ] = function ( ) {
400
+ it ( "test token array LIFO" , function ( ) {
399
401
var lexData = {
400
402
rules : [
401
403
[ "a" , "return ['b','a'];" ] ,
@@ -415,9 +417,9 @@ exports["test token array LIFO"] = function() {
415
417
var parser = new Jison . Parser ( grammar ) ;
416
418
parser . lexer = new RegExpLexer ( lexData ) ;
417
419
assert . equal ( parser . parse ( 'ac' ) , "abc" , "should return second token" ) ;
418
- } ;
420
+ } ) ;
419
421
420
- exports [ "test YYACCEPT" ] = function ( ) {
422
+ it ( "test YYACCEPT" , function ( ) {
421
423
var lexData = {
422
424
rules : [
423
425
[ "x" , "return 'x';" ] ,
@@ -438,9 +440,9 @@ exports["test YYACCEPT"] = function() {
438
440
439
441
assert . equal ( parser . parse ( 'x' ) , "EX" , "return first token" ) ;
440
442
assert . equal ( parser . parse ( 'yx' ) , true , "return first after reduction" ) ;
441
- } ;
443
+ } ) ;
442
444
443
- exports [ "test YYABORT" ] = function ( ) {
445
+ it ( "test YYABORT" , function ( ) {
444
446
var lexData = {
445
447
rules : [
446
448
[ "x" , "return 'x';" ] ,
@@ -461,9 +463,9 @@ exports["test YYABORT"] = function() {
461
463
462
464
assert . equal ( parser . parse ( 'x' ) , "EX" , "return first token" ) ;
463
465
assert . equal ( parser . parse ( 'yx' ) , false , "return first after reduction" ) ;
464
- } ;
466
+ } ) ;
465
467
466
- exports [ "test parse params" ] = function ( ) {
468
+ it ( "test parse params" , function ( ) {
467
469
var lexData = {
468
470
rules : [
469
471
[ "y" , "return 'y';" ]
@@ -481,9 +483,9 @@ exports["test parse params"] = function() {
481
483
parser . lexer = new RegExpLexer ( lexData ) ;
482
484
483
485
assert . equal ( parser . parse ( 'y' , "foo" , "bar" ) , "foobar" , "semantic action" ) ;
484
- } ;
486
+ } ) ;
485
487
486
- exports [ "test symbol aliases" ] = function ( ) {
488
+ it ( "test symbol aliases" , function ( ) {
487
489
var lexData = {
488
490
rules : [
489
491
[ "a" , "return 'a';" ] ,
@@ -503,9 +505,9 @@ exports["test symbol aliases"] = function() {
503
505
var parser = new Jison . Parser ( grammar ) ;
504
506
parser . lexer = new RegExpLexer ( lexData ) ;
505
507
assert . equal ( parser . parse ( 'abc' ) , "abc" , "should return original string" ) ;
506
- } ;
508
+ } ) ;
507
509
508
- exports [ "test symbol aliases in ebnf" ] = function ( ) {
510
+ it ( "test symbol aliases in ebnf" , function ( ) {
509
511
var lexData = {
510
512
rules : [
511
513
[ "a" , "return 'a';" ] ,
@@ -525,9 +527,9 @@ exports["test symbol aliases in ebnf"] = function() {
525
527
var parser = new Jison . Parser ( grammar ) ;
526
528
parser . lexer = new RegExpLexer ( lexData ) ;
527
529
assert . equal ( parser . parse ( 'abc' ) , "a[b,c]" , "should tolerate aliases in subexpression" ) ;
528
- } ;
530
+ } ) ;
529
531
530
- exports [ "test symbol aliases for terminals" ] = function ( ) {
532
+ it ( "test symbol aliases for terminals" , function ( ) {
531
533
var lexData = {
532
534
rules : [
533
535
[ "a" , "return 'a';" ] ,
@@ -544,4 +546,5 @@ exports["test symbol aliases for terminals"] = function() {
544
546
var parser = new Jison . Parser ( grammar ) ;
545
547
parser . lexer = new RegExpLexer ( lexData ) ;
546
548
assert . equal ( parser . parse ( 'abc' ) , "abc" , "should return original string" ) ;
547
- } ;
549
+ } ) ;
550
+ } ) ;
0 commit comments