diff --git a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java index 48f59e33a17bb3ad637f89c947887379c5bb22e4..1318cad8b7ea90c45bc146fe57ad32af7125cd38 100644 --- a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java +++ b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java @@ -124,19 +124,22 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter position = CG.getTermNumbers().get(term); - if(type_name.startsWith("L")) + if("null".equals(type_name)) { - type_name = "list"; - } - else if(type_name.equals("null")) - { - type_name = "null"; + macros.apply(file, "ParserNewBodyListAddNull", null); } else { - type_name = type_name.toLowerCase(); + if(type_name.startsWith("L")) + { + type_name = "list"; + } + else + { + type_name = type_name.toLowerCase(); + } + macros.apply(file, "ParserNewBodyListAdd", new String[] {type_name, "" + position}); } - macros.apply(file, "ParserNewBodyListAdd", new String[] {type_name, "" + position}); } if (popCount > 0) { diff --git a/src/main/resources/org/sablecc/sablecc/parser.txt b/src/main/resources/org/sablecc/sablecc/parser.txt index 0632711d7ecfebd8eecabe76a3fa6b91a3bd32d9..237514633f0125e95f0a17e947f87f17ca8939ce 100644 --- a/src/main/resources/org/sablecc/sablecc/parser.txt +++ b/src/main/resources/org/sablecc/sablecc/parser.txt @@ -390,6 +390,11 @@ Macro:ParserNewBodyListAdd $ +Macro:ParserNewBodyListAddNull + nodeList.add(null); + +$ + Macro:ParserNewCheck checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList$0$);