diff --git a/tool/src/org/antlr/v4/automata/ATNSerializer.java b/tool/src/org/antlr/v4/automata/ATNSerializer.java index 0e51e03f4..6781055ae 100644 --- a/tool/src/org/antlr/v4/automata/ATNSerializer.java +++ b/tool/src/org/antlr/v4/automata/ATNSerializer.java @@ -247,7 +247,7 @@ public class ATNSerializer { int loopBackStateNumber = ATNSimulator.toInt(data[p++]); arg = " "+loopBackStateNumber; } - else if ( stype == ATNState.PLUS_BLOCK_START || stype == ATNState.STAR_BLOCK_START ) { + else if ( stype == ATNState.PLUS_BLOCK_START || stype == ATNState.STAR_BLOCK_START || stype == ATNState.BLOCK_START ) { int endStateNumber = ATNSimulator.toInt(data[p++]); arg = " "+endStateNumber; } diff --git a/tool/test/org/antlr/v4/test/TestATNSerialization.java b/tool/test/org/antlr/v4/test/TestATNSerialization.java index 565748050..bc9b8e9ff 100644 --- a/tool/test/org/antlr/v4/test/TestATNSerialization.java +++ b/tool/test/org/antlr/v4/test/TestATNSerialization.java @@ -153,23 +153,23 @@ public class TestATNSerialization extends BaseTest { "a : A | A B ;"); String expecting = "max type 2\n" + - "0:RULE_START 0\n" + - "1:RULE_STOP 0\n" + - "2:BASIC 0\n" + - "4:BASIC 0\n" + - "6:BASIC 0\n" + - "8:BLOCK_START 0\n" + - "9:BLOCK_END 0\n" + - "10:BASIC 0\n" + - "rule 0:0\n" + - "0->8 EPSILON 0,0,0\n" + - "2->9 ATOM 1,0,0\n" + - "4->6 ATOM 1,0,0\n" + - "6->9 ATOM 2,0,0\n" + - "8->2 EPSILON 0,0,0\n" + - "8->4 EPSILON 0,0,0\n" + - "9->1 EPSILON 0,0,0\n" + - "0:8 1\n"; + "0:RULE_START 0\n" + + "1:RULE_STOP 0\n" + + "2:BASIC 0\n" + + "3:BASIC 0\n" + + "4:BASIC 0\n" + + "5:BLOCK_START 0 6\n" + + "6:BLOCK_END 0\n" + + "7:BASIC 0\n" + + "rule 0:0\n" + + "0->5 EPSILON 0,0,0\n" + + "2->6 ATOM 1,0,0\n" + + "3->4 ATOM 1,0,0\n" + + "4->6 ATOM 2,0,0\n" + + "5->2 EPSILON 0,0,0\n" + + "5->3 EPSILON 0,0,0\n" + + "6->1 EPSILON 0,0,0\n" + + "0:5 1\n"; ATN atn = createATN(g); String result = ATNSerializer.getDecoded(g, atn); assertEquals(expecting, result); @@ -181,31 +181,30 @@ public class TestATNSerialization extends BaseTest { "a : A | A B | A B C ;"); String expecting = "max type 3\n" + - "0:RULE_START 0\n" + - "1:RULE_STOP 0\n" + - "2:BASIC 0\n" + - "4:BASIC 0\n" + - "6:BASIC 0\n" + - "8:BASIC 0\n" + - "10:BASIC 0\n" + - "12:BASIC 0\n" + - "14:BLOCK_START 0\n" + - "15:BLOCK_END 0\n" + - "16:BASIC 0\n" + - "rule 0:0\n" + - "0->14 EPSILON 0,0,0\n" + - "1->16 ATOM -1,0,0\n" + - "2->15 ATOM 1,0,0\n" + - "4->6 ATOM 1,0,0\n" + - "6->15 ATOM 2,0,0\n" + - "8->10 ATOM 1,0,0\n" + - "10->12 ATOM 2,0,0\n" + - "12->15 ATOM 3,0,0\n" + - "14->2 EPSILON 0,0,0\n" + - "14->4 EPSILON 0,0,0\n" + - "14->8 EPSILON 0,0,0\n" + - "15->1 EPSILON 0,0,0\n" + - "0:14 1\n"; + "0:RULE_START 0\n" + + "1:RULE_STOP 0\n" + + "2:BASIC 0\n" + + "3:BASIC 0\n" + + "4:BASIC 0\n" + + "5:BASIC 0\n" + + "6:BASIC 0\n" + + "7:BASIC 0\n" + + "8:BLOCK_START 0 9\n" + + "9:BLOCK_END 0\n" + + "10:BASIC 0\n" + + "rule 0:0\n" + + "0->8 EPSILON 0,0,0\n" + + "2->9 ATOM 1,0,0\n" + + "3->4 ATOM 1,0,0\n" + + "4->9 ATOM 2,0,0\n" + + "5->6 ATOM 1,0,0\n" + + "6->7 ATOM 2,0,0\n" + + "7->9 ATOM 3,0,0\n" + + "8->2 EPSILON 0,0,0\n" + + "8->3 EPSILON 0,0,0\n" + + "8->5 EPSILON 0,0,0\n" + + "9->1 EPSILON 0,0,0\n" + + "0:8 1\n"; ATN atn = createATN(g); String result = ATNSerializer.getDecoded(g, atn); assertEquals(expecting, result); @@ -359,26 +358,24 @@ public class TestATNSerialization extends BaseTest { "INT : 'a' (EOF|'\n') ;\n"); String expecting = "max type 1\n" + - "0:TOKEN_START -1\n" + - "1:RULE_START 0\n" + - "2:RULE_STOP 0\n" + - "3:BASIC 0\n" + - "5:BASIC 0\n" + - "7:BASIC 0\n" + - "9:BLOCK_START 0\n" + - "10:BLOCK_END 0\n" + - "rule 0:1 1,-1\n" + - "mode 0:0\n" + - "0->1 EPSILON 0,0,0\n" + - "1->3 EPSILON 0,0,0\n" + - "3->9 ATOM 97,0,0\n" + - "5->10 ATOM -1,0,0\n" + - "7->10 ATOM 10,0,0\n" + - "9->5 EPSILON 0,0,0\n" + - "9->7 EPSILON 0,0,0\n" + - "10->2 EPSILON 0,0,0\n" + - "0:0 1\n" + - "1:9 1\n"; + "0:TOKEN_START -1\n" + + "1:RULE_START 0\n" + + "2:RULE_STOP 0\n" + + "3:BASIC 0\n" + + "4:BASIC 0\n" + + "5:BLOCK_START 0 6\n" + + "6:BLOCK_END 0\n" + + "rule 0:1 1,-1\n" + + "mode 0:0\n" + + "0:EOF..EOF, '\\n'..'\\n'\n" + + "0->1 EPSILON 0,0,0\n" + + "1->3 EPSILON 0,0,0\n" + + "3->5 ATOM 97,0,0\n" + + "4->6 SET 0,0,0\n" + + "5->4 EPSILON 0,0,0\n" + + "6->2 EPSILON 0,0,0\n" + + "0:0 1\n" + + "1:5 1\n"; ATN atn = createATN(lg); String result = ATNSerializer.getDecoded(lg, atn); assertEquals(expecting, result);