@ -135,30 +135,29 @@ describe("compiler pass |generateBytecode|", function() {
it ( "generates correct bytecode" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , bytecodeDetails ( [
1 , // PUSH_CURR_POS
14 , 1, 2 , 2 , 18 , 1 , 19 , 2 , // <elements[0]>
11 , 4 2, 4 , // IF_NOT_ERROR
14 , 3, 2 , 2 , 18 , 3 , 19 , 4 , // * <elements[1]>
11 , 2 6, 5 , // IF_NOT_ERROR
14 , 5, 2 , 2 , 18 , 5 , 19 , 6 , // * <elements[2]>
11 , 10 , 5 , // IF_NOT_ERROR
14 , 0, 2 , 2 , 18 , 0 , 19 , 1 , // <elements[0]>
11 , 4 0, 3 , // IF_NOT_ERROR
14 , 2, 2 , 2 , 18 , 2 , 19 , 3 , // * <elements[1]>
11 , 2 5, 4 , // IF_NOT_ERROR
14 , 4, 2 , 2 , 18 , 4 , 19 , 5 , // * <elements[2]>
11 , 10 , 4 , // IF_NOT_ERROR
20 , 3 , // * REPORT_SAVED_POS
22 , 7 , 3 , 3 , 2 , 1 , 0 , // CALL
22 , 6 , 3 , 3 , 2 , 1 , 0 , // CALL
5 , // NIP
4 , 3 , // * POP_N
3 , // POP_CURR_POS
0, 0 , // PUSH
28, // PUSH_FAILED
4 , 2 , // * POP_N
3 , // POP_CURR_POS
0, 0 , // PUSH
28, // PUSH_FAILED
2 , // * POP
3 , // POP_CURR_POS
0, 0 // PUSH
28 // PUSH_FAILED
] ) ) ;
} ) ;
it ( "defines correct constants" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , constsDetails ( [
'peg$FAILED' ,
'"a"' ,
'{ type: "literal", value: "a", description: "\\"a\\"" }' ,
'"b"' ,
@ -177,29 +176,28 @@ describe("compiler pass |generateBytecode|", function() {
it ( "generates correct bytecode" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , bytecodeDetails ( [
1 , // PUSH_CURR_POS
14 , 1, 2 , 2 , 18 , 1 , 19 , 2 , // <elements[0]>
11 , 3 5, 4 , // IF_NOT_ERROR
14 , 3, 2 , 2 , 18 , 3 , 19 , 4 , // * <elements[1]>
11 , 1 9, 5 , // IF_NOT_ERROR
14 , 5, 2 , 2 , 18 , 5 , 19 , 6 , // * <elements[2]>
11 , 3 , 5 , // IF_NOT_ERROR
14 , 0, 2 , 2 , 18 , 0 , 19 , 1 , // <elements[0]>
11 , 3 3, 3 , // IF_NOT_ERROR
14 , 2, 2 , 2 , 18 , 2 , 19 , 3 , // * <elements[1]>
11 , 1 8, 4 , // IF_NOT_ERROR
14 , 4, 2 , 2 , 18 , 4 , 19 , 5 , // * <elements[2]>
11 , 3 , 4 , // IF_NOT_ERROR
7 , 3 , // * WRAP
5 , // NIP
4 , 3 , // * POP_N
3 , // POP_CURR_POS
0, 0 , // PUSH
28, // PUSH_FAILED
4 , 2 , // * POP_N
3 , // POP_CURR_POS
0, 0 , // PUSH
28, // PUSH_FAILED
2 , // * POP
3 , // POP_CURR_POS
0, 0 // PUSH
28 // PUSH_FAILED
] ) ) ;
} ) ;
it ( "defines correct constants" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , constsDetails ( [
'peg$FAILED' ,
'"a"' ,
'{ type: "literal", value: "a", description: "\\"a\\"" }' ,
'"b"' ,
@ -237,22 +235,20 @@ describe("compiler pass |generateBytecode|", function() {
expect ( pass ) . toChangeAST ( grammar , bytecodeDetails ( [
1 , // PUSH_CURR_POS
24 , // SILENT_FAILS_ON
14 , 2, 2 , 2 , 18 , 2 , 19 , 3 , // <expression>
14 , 0, 2 , 2 , 18 , 0 , 19 , 1 , // <expression>
25 , // SILENT_FAILS_OFF
11 , 4, 4 , // IF_NOT_ERROR
11 , 3, 3 , // IF_NOT_ERROR
2 , // * POP
3 , // POP_CURR_POS
0, 0 , // PUSH
26, // PUSH_UNDEFINED
2 , // * POP
2 , // POP
0, 1 // PUSH
28 // PUSH_FAILED
] ) ) ;
} ) ;
it ( "defines correct constants" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , constsDetails ( [
'void 0' ,
'peg$FAILED' ,
'"a"' ,
'{ type: "literal", value: "a", description: "\\"a\\"" }'
] ) ) ;
@ -266,22 +262,20 @@ describe("compiler pass |generateBytecode|", function() {
expect ( pass ) . toChangeAST ( grammar , bytecodeDetails ( [
1 , // PUSH_CURR_POS
24 , // SILENT_FAILS_ON
14 , 2, 2 , 2 , 18 , 2 , 19 , 3 , // <expression>
14 , 0, 2 , 2 , 18 , 0 , 19 , 1 , // <expression>
25 , // SILENT_FAILS_OFF
10 , 4, 4 , // IF_ERROR
10 , 3, 3 , // IF_ERROR
2 , // * POP
2 , // POP
0, 0 , // PUSH
26, // PUSH_UNDEFINED
2 , // * POP
3 , // POP_CURR_POS
0, 1 // PUSH
28 // PUSH_FAILED
] ) ) ;
} ) ;
it ( "defines correct constants" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , constsDetails ( [
'void 0' ,
'peg$FAILED' ,
'"a"' ,
'{ type: "literal", value: "a", description: "\\"a\\"" }'
] ) ) ;
@ -296,18 +290,18 @@ describe("compiler pass |generateBytecode|", function() {
expect ( pass ) . toChangeAST ( grammar , bytecodeDetails ( [
21 , // REPORT_CURR_POS
22 , 0 , 0 , 0 , // CALL
9 , 3, 3 , // IF
9 , 2, 2 , // IF
2 , // * POP
0, 1 , // PUSH
26, // PUSH_UNDEFINED
2 , // * POP
0, 2 // PUSH
28 // PUSH _FAILED
] ) ) ;
} ) ;
it ( "defines correct constants" , function ( ) {
expect ( pass ) . toChangeAST (
grammar ,
constsDetails ( [ 'function() { code }' , 'void 0' , 'peg$FAILED' ])
constsDetails ( [ 'function() { code }' ])
) ;
} ) ;
} ) ;
@ -318,48 +312,46 @@ describe("compiler pass |generateBytecode|", function() {
it ( "generates correct bytecode" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , bytecodeDetails ( [
1 , // PUSH_CURR_POS
14 , 1, 2 , 2 , 18 , 1 , 19 , 2 , // <elements[0]>
11 , 60, 4 , // IF_NOT_ERROR
14 , 3, 2 , 2 , 18 , 3 , 19 , 4 , // * <elements[1]>
11 , 4 4, 5 , // IF_NOT_ERROR
14 , 5, 2 , 2 , 18 , 5 , 19 , 6 , // * <elements[2]>
11 , 2 8, 5 , // IF_NOT_ERROR
14 , 0, 2 , 2 , 18 , 0 , 19 , 1 , // <elements[0]>
11 , 55, 3 , // IF_NOT_ERROR
14 , 2, 2 , 2 , 18 , 2 , 19 , 3 , // * <elements[1]>
11 , 4 0, 4 , // IF_NOT_ERROR
14 , 4, 2 , 2 , 18 , 4 , 19 , 5 , // * <elements[2]>
11 , 2 5, 4 , // IF_NOT_ERROR
21 , // * REPORT_CURR_POS
22 , 7 , 0 , 3 , 2 , 1 , 0 , // CALL
9 , 3, 3 , // IF
22 , 6 , 0 , 3 , 2 , 1 , 0 , // CALL
9 , 2, 2 , // IF
2 , // * POP
0, 8 , // PUSH
26, // PUSH _UNDEFINED
2 , // * POP
0, 0 , // PUSH
11 , 3 , 5 , // IF_NOT_ERROR
28, // PUSH _FAILED
11 , 3 , 4 , // IF_NOT_ERROR
7 , 4 , // * WRAP
5 , // NIP
4 , 4 , // * POP_N
3 , // POP_CURR_POS
0, 0 , // PUSH
28, // PUSH _FAILED
4 , 3 , // * POP_N
3 , // POP_CURR_POS
0, 0 , // PUSH
28, // PUSH_FAILED
4 , 2 , // * POP_N
3 , // POP_CURR_POS
0, 0 , // PUSH
28, // PUSH_FAILED
2 , // * POP
3 , // POP_CURR_POS
0, 0 // PUSH
28 // PUSH_FAILED
] ) ) ;
} ) ;
it ( "defines correct constants" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , constsDetails ( [
'peg$FAILED' ,
'"a"' ,
'{ type: "literal", value: "a", description: "\\"a\\"" }' ,
'"b"' ,
'{ type: "literal", value: "b", description: "\\"b\\"" }' ,
'"c"' ,
'{ type: "literal", value: "c", description: "\\"c\\"" }' ,
'function(a, b, c) { code }' ,
'void 0'
'function(a, b, c) { code }'
] ) ) ;
} ) ;
} ) ;
@ -373,18 +365,18 @@ describe("compiler pass |generateBytecode|", function() {
expect ( pass ) . toChangeAST ( grammar , bytecodeDetails ( [
21 , // REPORT_CURR_POS
22 , 0 , 0 , 0 , // CALL
9 , 3, 3 , // IF
9 , 2, 2 , // IF
2 , // * POP
0, 2, // PUSH
28 , // PUSH _FAILED
2 , // * POP
0, 1 // PUSH
26 // PUSH_UNDEFINED
] ) ) ;
} ) ;
it ( "defines correct constants" , function ( ) {
expect ( pass ) . toChangeAST (
grammar ,
constsDetails ( [ 'function() { code }' , 'void 0' , 'peg$FAILED' ])
constsDetails ( [ 'function() { code }' ])
) ;
} ) ;
} ) ;
@ -395,48 +387,46 @@ describe("compiler pass |generateBytecode|", function() {
it ( "generates correct bytecode" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , bytecodeDetails ( [
1 , // PUSH_CURR_POS
14 , 1, 2 , 2 , 18 , 1 , 19 , 2 , // <elements[0]>
11 , 60, 4 , // IF_NOT_ERROR
14 , 3, 2 , 2 , 18 , 3 , 19 , 4 , // * <elements[1]>
11 , 4 4, 5 , // IF_NOT_ERROR
14 , 5, 2 , 2 , 18 , 5 , 19 , 6 , // * <elements[2]>
11 , 2 8, 5 , // IF_NOT_ERROR
14 , 0, 2 , 2 , 18 , 0 , 19 , 1 , // <elements[0]>
11 , 55, 3 , // IF_NOT_ERROR
14 , 2, 2 , 2 , 18 , 2 , 19 , 3 , // * <elements[1]>
11 , 4 0, 4 , // IF_NOT_ERROR
14 , 4, 2 , 2 , 18 , 4 , 19 , 5 , // * <elements[2]>
11 , 2 5, 4 , // IF_NOT_ERROR
21 , // * REPORT_CURR_POS
22 , 7 , 0 , 3 , 2 , 1 , 0 , // CALL
9 , 3, 3 , // IF
22 , 6 , 0 , 3 , 2 , 1 , 0 , // CALL
9 , 2, 2 , // IF
2 , // * POP
0, 0 , // PUSH
28, // PUSH _FAILED
2 , // * POP
0, 8 , // PUSH
11 , 3 , 5 , // IF_NOT_ERROR
26, // PUSH _UNDEFINED
11 , 3 , 4 , // IF_NOT_ERROR
7 , 4 , // * WRAP
5 , // NIP
4 , 4 , // * POP_N
3 , // POP_CURR_POS
0, 0 , // PUSH
28, // PUSH _FAILED
4 , 3 , // * POP_N
3 , // POP_CURR_POS
0, 0 , // PUSH
28, // PUSH_FAILED
4 , 2 , // * POP_N
3 , // POP_CURR_POS
0, 0 , // PUSH
28, // PUSH_FAILED
2 , // * POP
3 , // POP_CURR_POS
0, 0 // PUSH
28 // PUSH_FAILED
] ) ) ;
} ) ;
it ( "defines correct constants" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , constsDetails ( [
'peg$FAILED' ,
'"a"' ,
'{ type: "literal", value: "a", description: "\\"a\\"" }' ,
'"b"' ,
'{ type: "literal", value: "b", description: "\\"b\\"" }' ,
'"c"' ,
'{ type: "literal", value: "c", description: "\\"c\\"" }' ,
'function(a, b, c) { code }' ,
'void 0'
'function(a, b, c) { code }'
] ) ) ;
} ) ;
} ) ;
@ -447,16 +437,15 @@ describe("compiler pass |generateBytecode|", function() {
it ( "generates correct bytecode" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , bytecodeDetails ( [
14 , 1, 2 , 2 , 18 , 1 , 19 , 2 , // <expression>
10 , 3 , 0 , // IF_ERROR
14 , 0, 2 , 2 , 18 , 0 , 19 , 1 , // <expression>
10 , 2 , 0 , // IF_ERROR
2 , // * POP
0, 0 // PUSH
27 // PUSH_NULL
] ) ) ;
} ) ;
it ( "defines correct constants" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , constsDetails ( [
'null' ,
'"a"' ,
'{ type: "literal", value: "a", description: "\\"a\\"" }'
] ) ) ;
@ -468,18 +457,17 @@ describe("compiler pass |generateBytecode|", function() {
it ( "generates correct bytecode" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , bytecodeDetails ( [
0, 0 , // PUSH
14 , 1, 2 , 2 , 18 , 1 , 19 , 2 , // <expression>
29, // PUSH_EMPTY_ARRAY
14 , 0, 2 , 2 , 18 , 0 , 19 , 1 , // <expression>
12 , 9 , // WHILE_NOT_ERROR
6 , // * APPEND
14 , 1, 2 , 2 , 18 , 1 , 19 , 2 , // <expression>
14 , 0, 2 , 2 , 18 , 0 , 19 , 1 , // <expression>
2 // POP
] ) ) ;
} ) ;
it ( "defines correct constants" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , constsDetails ( [
'[]' ,
'"a"' ,
'{ type: "literal", value: "a", description: "\\"a\\"" }'
] ) ) ;
@ -491,23 +479,21 @@ describe("compiler pass |generateBytecode|", function() {
it ( "generates correct bytecode" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , bytecodeDetails ( [
0, 0 , // PUSH
14 , 2, 2 , 2 , 18 , 2 , 19 , 3 , // <expression>
11 , 12 , 4 , // IF_NOT_ERROR
29, // PUSH_EMPTY_ARRAY
14 , 0, 2 , 2 , 18 , 0 , 19 , 1 , // <expression>
11 , 12 , 3 , // IF_NOT_ERROR
12 , 9 , // * WHILE_NOT_ERROR
6 , // * APPEND
14 , 2, 2 , 2 , 18 , 2 , 19 , 3 , // <expression>
14 , 0, 2 , 2 , 18 , 0 , 19 , 1 , // <expression>
2 , // POP
2 , // * POP
2 , // POP
0, 1 // PUSH
28 // PUSH_FAILED
] ) ) ;
} ) ;
it ( "defines correct constants" , function ( ) {
expect ( pass ) . toChangeAST ( grammar , constsDetails ( [
'[]' ,
'peg$FAILED' ,
'"a"' ,
'{ type: "literal", value: "a", description: "\\"a\\"" }'
] ) ) ;