Search in sources :

Example 6 with ProgramParser

use of com.dat3m.dartagnan.parsers.program.ProgramParser in project Dat3M by hernanponcedeleon.

the class PrinterTest method PrintPPC.

@Test()
public void PrintPPC() throws Exception {
    Program p = new ProgramParser().parse(new File(ResourceHelper.TEST_RESOURCE_PATH + "litmus/MP+lwsync+data-wsi-rfi-ctrlisync.litmus"));
    assertNotNull(new Printer().print(p));
    assertNotNull(p.getAss().toString());
}
Also used : Program(com.dat3m.dartagnan.program.Program) ProgramParser(com.dat3m.dartagnan.parsers.program.ProgramParser) Printer(com.dat3m.dartagnan.utils.printer.Printer) File(java.io.File) Test(org.junit.Test)

Example 7 with ProgramParser

use of com.dat3m.dartagnan.parsers.program.ProgramParser in project Dat3M by hernanponcedeleon.

the class PrinterTest method PrintLinux2.

@Test()
public void PrintLinux2() throws Exception {
    Program p = new ProgramParser().parse(new File(ResourceHelper.LITMUS_RESOURCE_PATH + "litmus/C/dart/C-atomic-fetch-simple-01.litmus"));
    assertNotNull(new Printer().print(p));
    assertNotNull(p.getAss().toString());
}
Also used : Program(com.dat3m.dartagnan.program.Program) ProgramParser(com.dat3m.dartagnan.parsers.program.ProgramParser) Printer(com.dat3m.dartagnan.utils.printer.Printer) File(java.io.File) Test(org.junit.Test)

Example 8 with ProgramParser

use of com.dat3m.dartagnan.parsers.program.ProgramParser in project Dat3M by hernanponcedeleon.

the class PrinterTest method PrintBpl2.

@Test()
public void PrintBpl2() throws Exception {
    Program p = new ProgramParser().parse(new File(ResourceHelper.TEST_RESOURCE_PATH + "locks/linuxrwlock-3.bpl"));
    assertNotNull(new Printer().print(p));
    LoopUnrolling.newInstance().run(p);
    Compilation.newInstance().run(p);
    assertNotNull(new Printer().print(p));
}
Also used : Program(com.dat3m.dartagnan.program.Program) ProgramParser(com.dat3m.dartagnan.parsers.program.ProgramParser) Printer(com.dat3m.dartagnan.utils.printer.Printer) File(java.io.File) Test(org.junit.Test)

Example 9 with ProgramParser

use of com.dat3m.dartagnan.parsers.program.ProgramParser in project Dat3M by hernanponcedeleon.

the class BuildWitnessTest method BuildWriteEncode.

@Test
public void BuildWriteEncode() throws Exception {
    Configuration config = Configuration.builder().setOption(WITNESS_ORIGINAL_PROGRAM_PATH, ResourceHelper.TEST_RESOURCE_PATH + "witness/lazy01-for-witness.bpl").setOption(BOUND, "1").build();
    Program p = new ProgramParser().parse(new File(ResourceHelper.TEST_RESOURCE_PATH + "witness/lazy01-for-witness.bpl"));
    Wmm wmm = new ParserCat().parse(new File(ResourceHelper.CAT_RESOURCE_PATH + "cat/svcomp.cat"));
    VerificationTask task = VerificationTask.builder().withConfig(config).build(p, wmm, EnumSet.of(Property.getDefault()));
    try (SolverContext ctx = TestHelper.createContext();
        ProverEnvironment prover = ctx.newProverEnvironment(ProverOptions.GENERATE_MODELS)) {
        Result res = IncrementalSolver.run(ctx, prover, task);
        WitnessBuilder witnessBuilder = new WitnessBuilder(task, ctx, prover, res);
        config.inject(witnessBuilder);
        WitnessGraph graph = witnessBuilder.build();
        File witnessFile = new File(System.getenv("DAT3M_HOME") + "/output/lazy01-for-witness.graphml");
        // The file should not exist
        assertFalse(witnessFile.exists());
        // Write to file
        graph.write();
        // The file should exist now
        assertTrue(witnessFile.exists());
        // Delete the file
        witnessFile.delete();
        // Create encoding
        BooleanFormula enc = graph.encode(p, ctx);
        BooleanFormulaManager bmgr = ctx.getFormulaManager().getBooleanFormulaManager();
        // Check the formula is not trivial
        assertFalse(bmgr.isFalse(enc));
        assertFalse(bmgr.isTrue(enc));
    }
}
Also used : Program(com.dat3m.dartagnan.program.Program) BooleanFormulaManager(org.sosy_lab.java_smt.api.BooleanFormulaManager) Configuration(org.sosy_lab.common.configuration.Configuration) ProgramParser(com.dat3m.dartagnan.parsers.program.ProgramParser) ParserCat(com.dat3m.dartagnan.parsers.cat.ParserCat) Result(com.dat3m.dartagnan.utils.Result) SolverContext(org.sosy_lab.java_smt.api.SolverContext) VerificationTask(com.dat3m.dartagnan.verification.VerificationTask) Wmm(com.dat3m.dartagnan.wmm.Wmm) File(java.io.File) ProverEnvironment(org.sosy_lab.java_smt.api.ProverEnvironment) BooleanFormula(org.sosy_lab.java_smt.api.BooleanFormula) Test(org.junit.Test)

Example 10 with ProgramParser

use of com.dat3m.dartagnan.parsers.program.ProgramParser in project Dat3M by hernanponcedeleon.

the class Dat3M method runTest.

private void runTest() {
    UiOptions options = optionsPane.getOptions();
    testResult = null;
    try {
        Editor programEditor = editorsPane.getEditor(EditorCode.PROGRAM);
        Program program = new ProgramParser().parse(programEditor.getEditorPane().getText(), programEditor.getLoadedFormat());
        try {
            Wmm targetModel = new ParserCat().parse(editorsPane.getEditor(EditorCode.TARGET_MM).getEditorPane().getText());
            testResult = new ReachabilityResult(program, targetModel, options);
        } catch (Exception e) {
            String msg = e.getMessage() == null ? "Memory model cannot be parsed" : e.getMessage();
            showError(msg, "Target memory model error");
        }
    } catch (Exception e) {
        String msg = e.getMessage() == null ? "Program cannot be parsed" : e.getMessage();
        Throwable cause = e.getCause();
        if (cause instanceof InputMismatchException) {
            Token token = ((InputMismatchException) cause).getOffendingToken();
            msg = "Problem with \"" + token.getText() + "\" at line " + token.getLine();
        }
        showError(msg, "Program error");
    }
}
Also used : ReachabilityResult(com.dat3m.ui.result.ReachabilityResult) Program(com.dat3m.dartagnan.program.Program) ProgramParser(com.dat3m.dartagnan.parsers.program.ProgramParser) Wmm(com.dat3m.dartagnan.wmm.Wmm) UiOptions(com.dat3m.ui.utils.UiOptions) Token(org.antlr.v4.runtime.Token) ParserCat(com.dat3m.dartagnan.parsers.cat.ParserCat) Editor(com.dat3m.ui.editor.Editor) InputMismatchException(org.antlr.v4.runtime.InputMismatchException) InputMismatchException(org.antlr.v4.runtime.InputMismatchException)

Aggregations

ProgramParser (com.dat3m.dartagnan.parsers.program.ProgramParser)20 Program (com.dat3m.dartagnan.program.Program)20 File (java.io.File)19 Test (org.junit.Test)18 Printer (com.dat3m.dartagnan.utils.printer.Printer)8 Compilation (com.dat3m.dartagnan.program.processing.compilation.Compilation)6 VerificationTask (com.dat3m.dartagnan.verification.VerificationTask)4 ProverEnvironment (org.sosy_lab.java_smt.api.ProverEnvironment)4 SolverContext (org.sosy_lab.java_smt.api.SolverContext)4 ParserCat (com.dat3m.dartagnan.parsers.cat.ParserCat)3 Wmm (com.dat3m.dartagnan.wmm.Wmm)3 Result (com.dat3m.dartagnan.utils.Result)2 IOException (java.io.IOException)2 Configuration (org.sosy_lab.common.configuration.Configuration)2 OptionInfo.collectOptions (com.dat3m.dartagnan.configuration.OptionInfo.collectOptions)1 PHANTOM_REFERENCES (com.dat3m.dartagnan.configuration.OptionNames.PHANTOM_REFERENCES)1 Property (com.dat3m.dartagnan.configuration.Property)1 ParserWitness (com.dat3m.dartagnan.parsers.witness.ParserWitness)1 SourceLanguage (com.dat3m.dartagnan.program.Program.SourceLanguage)1 CreateGitInfo (com.dat3m.dartagnan.utils.GitInfo.CreateGitInfo)1