module Dimacs
rascal-0.30.1
Usage
import lang::dimacs::\syntax::Dimacs;
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;