Skip to main content

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;