use of de.be4.classicalb.core.preparser.parser.Parser in project probparsers by bendisposto.
the class Helpers method getPrettyPrint.
public static String getPrettyPrint(final String testMachine) {
final BParser parser = new BParser("testcase");
Start startNode;
try {
startNode = parser.parse(testMachine, false);
} catch (BCompoundException e) {
throw new RuntimeException(e);
}
PrettyPrinter pp = new PrettyPrinter();
startNode.apply(pp);
return pp.getPrettyPrint();
}
use of de.be4.classicalb.core.preparser.parser.Parser in project probparsers by bendisposto.
the class CliBParser method runPRepl.
private static void runPRepl(final ParsingBehaviour behaviour) throws IOException, FileNotFoundException {
PrintStream out;
ServerSocket serverSocket = new ServerSocket(0, 50, InetAddress.getLoopbackAddress());
// write port number as prolog term
System.out.println(serverSocket.getLocalPort() + ".");
socket = serverSocket.accept();
socketOutputStream = socket.getOutputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), encoding));
String line = "";
MockedDefinitions context = new MockedDefinitions();
boolean terminate = false;
while (!terminate) {
line = in.readLine();
EPreplCommands command;
String theFormula;
if (line == null) {
// the prob instance has been terminated. exit gracefully
command = EPreplCommands.halt;
} else {
command = EPreplCommands.valueOf(line);
}
switch(command) {
case version:
print(CliBParser.getBuildRevision() + System.lineSeparator());
break;
case definition:
String name = in.readLine();
String type = in.readLine();
String parameterCount = in.readLine();
context.addMockedDefinition(name, type, parameterCount);
break;
case machine:
String filename = in.readLine();
String outFile = in.readLine();
out = new PrintStream(outFile, encoding);
final File bfile = new File(filename);
int returnValue;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
try {
final String fileName = bfile.getName();
final String extension = fileName.substring(fileName.lastIndexOf(".") + 1);
if (extension.equals("rmch")) {
returnValue = RulesProject.parseProject(bfile, behaviour, out, ps);
} else {
final BParser parser = new BParser(bfile.getAbsolutePath());
returnValue = parser.fullParsing(bfile, behaviour, out, ps);
}
context = new MockedDefinitions();
} catch (Exception e) {
e.printStackTrace();
returnValue = -4;
} finally {
if (true) {
out.close();
}
}
if (returnValue == 0) {
print("exit(" + returnValue + ")." + System.lineSeparator());
} else {
String output = baos.toString().replace(System.lineSeparator(), " ").trim();
print(output + System.lineSeparator());
}
break;
case formula:
theFormula = "#FORMULA\n" + in.readLine();
parseFormula(theFormula, context);
break;
case expression:
theFormula = "#EXPRESSION\n" + in.readLine();
parseFormula(theFormula, context);
break;
case predicate:
theFormula = "#PREDICATE\n" + in.readLine();
parseFormula(theFormula, context);
break;
case substitution:
theFormula = "#SUBSTITUTION\n" + in.readLine();
parseFormula(theFormula, context);
break;
case extendedformula:
theFormula = "#FORMULA\n" + in.readLine();
parseExtendedFormula(theFormula, context);
break;
case extendedexpression:
theFormula = "#EXPRESSION\n" + in.readLine();
parseExtendedFormula(theFormula, context);
break;
case extendedpredicate:
theFormula = "#PREDICATE\n" + in.readLine();
parseExtendedFormula(theFormula, context);
break;
case extendedsubstitution:
theFormula = "#SUBSTITUTION\n" + in.readLine();
parseExtendedFormula(theFormula, context);
break;
case ltl:
String extension = in.readLine();
final ProBParserBase extParser = LtlConsoleParser.getExtensionParser(extension);
final TemporalLogicParser<?> parser = new LtlParser(extParser);
parseTemporalFormula(in, parser);
break;
case ctl:
String extension2 = in.readLine();
final ProBParserBase extParser2 = LtlConsoleParser.getExtensionParser(extension2);
final TemporalLogicParser<?> parser2 = new CtlParser(extParser2);
parseTemporalFormula(in, parser2);
break;
case halt:
socket.close();
serverSocket.close();
terminate = true;
break;
default:
throw new UnsupportedOperationException("Unsupported Command " + line);
}
}
}
use of de.be4.classicalb.core.preparser.parser.Parser in project probparsers by bendisposto.
the class PragmaMachineTest method testParsable.
@Test
public void testParsable() throws Exception {
final BParser parser = new BParser(machine.getName());
Start start = parser.parseFile(machine, false);
start.apply(new PositionTester());
assertNotNull(start);
}
use of de.be4.classicalb.core.preparser.parser.Parser in project probparsers by bendisposto.
the class PositionAspectTest method testComposedNode.
@Test
public void testComposedNode() throws Exception {
final String testMachine = "#EXPRESSION x+1";
final BParser parser = new BParser("testcase");
final Start startNode = parser.parse(testMachine, true);
// test top node
final PExpression expression = ((AExpressionParseUnit) startNode.getPParseUnit()).getExpression();
SourcePosition startPos = expression.getStartPos();
SourcePosition endPos = expression.getEndPos();
assertNotNull(startNode);
assertNotNull(endPos);
assertEquals(1, startPos.getLine());
assertEquals(13, startPos.getPos());
assertEquals(1, endPos.getLine());
assertEquals(16, endPos.getPos());
// test left child: 13-14
final PExpression leftExpr = ((AAddExpression) expression).getLeft();
startPos = leftExpr.getStartPos();
endPos = leftExpr.getEndPos();
assertNotNull(startNode);
assertNotNull(endPos);
assertEquals(1, startPos.getLine());
assertEquals(13, startPos.getPos());
assertEquals(1, endPos.getLine());
assertEquals(14, endPos.getPos());
// test right child: 15-16
final PExpression rightExpr = ((AAddExpression) expression).getRight();
startPos = rightExpr.getStartPos();
endPos = rightExpr.getEndPos();
assertNotNull(startNode);
assertNotNull(endPos);
assertEquals(1, startPos.getLine());
assertEquals(15, startPos.getPos());
assertEquals(1, endPos.getLine());
assertEquals(16, endPos.getPos());
}
use of de.be4.classicalb.core.preparser.parser.Parser in project probparsers by bendisposto.
the class PositionAspectTest method testNodeSubclassOfPositionedNode.
@Test
public void testNodeSubclassOfPositionedNode() throws Exception {
final String testMachine = "#EXPRESSION 1+2";
final BParser parser = new BParser("testcase");
final Start startNode = parser.parse(testMachine, true);
assertTrue(startNode instanceof PositionedNode);
}
Aggregations