Skip to main content

module lang::dimacs::\syntax::Dimacs

rascal-0.40.16

Standard format for boolean formulas in conjunctive normal form.

Usage

import lang::dimacs::\syntax::Dimacs;

Description

This format is used by the yearly SAT competition, see https://www.satcompetition.org/ .

Examples

This is a sample .cnf file:

c A sample .cnf file.
p cnf 3 2
1 -3 0
2 3 -1 0

syntax L

layout L = [\t\ \r]*;

syntax Comment

lexical Comment = comment: "c" ![\n]* "\n";

syntax Prologue

lexical Prologue = prologue: "p" "cnf" Number variables Number clauses ![\n]* "\n";

syntax Number

lexical Number 
= positive: [0-9]+ !>> [0-9]
| non-assoc negative: "-" Number number
;

syntax Dimacs

start syntax Dimacs
= Prologue prologue {Line "\n"}+ lines "\n";

syntax Line

syntax Line 
= disjunct: Disjunct disjunct
| comment: Comment comment
;

syntax Disjunct

syntax Disjunct = Number+ numbers;