从零开始编写SAT求解器(二)
从零开始编写SAT求解器(二)
上一篇地址
文件解析器
上代码:
//
// Dimacs parser.
//filename:DimacsParser.h
//
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cassert>
#include "common.h"
#ifndef DPLL_DIMACSPARSER_H
#define DPLL_DIMACSPARSER_H
class DimacsParser {
public:
/**
* Parse a dimacs file.
* @param file_name dimacs file name
* @return a parsed formula (if succeeds)
*/
static formula parse(const std::string &file_name) {
std::ifstream fin(file_name);
if (!fin) {
std::cerr << "file not found: " << file_name << "'" << std::endl;
std::exit(1);
}
int n = 0, m = 0;
while (