Skip to content
Snippets Groups Projects
Commit a1a38173 authored by dgelessus's avatar dgelessus
Browse files

Combine two halves of New and list term code generation

parent fbf32a13
No related branches found
No related tags found
No related merge requests found
...@@ -181,23 +181,6 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter ...@@ -181,23 +181,6 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
} }
} }
private void generateNewTermDeclarations(List<PTerm> params)
{
try
{
macros.apply(file, "ParserBraceOpening");
for(PTerm term : params)
{
generateVariableDeclaration(term);
}
}
catch(IOException e)
{
throw new RuntimeException("An error occured while writing to " +
new File(pkgDir, "Parser.java").getAbsolutePath(), e);
}
}
private void generateSimpleTerm(Node node, TId id, TId simpleTermTail) private void generateSimpleTerm(Node node, TId id, TId simpleTermTail)
{ {
try try
...@@ -267,19 +250,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter ...@@ -267,19 +250,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
} }
@Override @Override
public void inANewTerm(ANewTerm node) public void caseAListTerm(AListTerm node)
{
generateNewTermDeclarations(node.getParams());
}
@Override
public void inANewListTerm(ANewListTerm node)
{
generateNewTermDeclarations(node.getParams());
}
@Override
public void inAListTerm(AListTerm node)
{ {
try try
{ {
...@@ -288,19 +259,12 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter ...@@ -288,19 +259,12 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
{ {
generateVariableDeclaration(term); generateVariableDeclaration(term);
} }
}
catch(IOException e) for(PListTerm listTerm : node.getListTerms())
{ {
throw new RuntimeException("An error occured while writing to " + listTerm.apply(this);
new File(pkgDir, "Parser.java").getAbsolutePath(), e);
}
} }
@Override
public void outAListTerm(AListTerm node)
{
try
{
for(PListTerm listTerm : node.getListTerms()) for(PListTerm listTerm : node.getListTerms())
{ {
String type_name = lookupInternalTypeName(listTerm); String type_name = lookupInternalTypeName(listTerm);
...@@ -332,6 +296,17 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter ...@@ -332,6 +296,17 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
try try
{ {
macros.apply(file, "ParserBraceOpening");
for(PTerm term : params)
{
generateVariableDeclaration(term);
}
for(PTerm param : params)
{
param.apply(this);
}
macros.apply(file, "ParserNewBodyNew", new String[] {getVariableName(node), newAltName}); macros.apply(file, "ParserNewBodyNew", new String[] {getVariableName(node), newAltName});
if(!params.isEmpty()) if(!params.isEmpty())
...@@ -356,13 +331,13 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter ...@@ -356,13 +331,13 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
} }
@Override @Override
public void outANewTerm(ANewTerm node) public void caseANewTerm(ANewTerm node)
{ {
generateNewTerm(node, (AProdName)node.getProdName(), node.getParams()); generateNewTerm(node, (AProdName)node.getProdName(), node.getParams());
} }
@Override @Override
public void outANewListTerm(ANewListTerm node) public void caseANewListTerm(ANewListTerm node)
{ {
generateNewTerm(node, (AProdName)node.getProdName(), node.getParams()); generateNewTerm(node, (AProdName)node.getProdName(), node.getParams());
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment