-
Notifications
You must be signed in to change notification settings - Fork 0
/
error.cc
79 lines (59 loc) · 2.68 KB
/
error.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include "error.h"
#include <iostream>
namespace blifverifier {
using std::endl;
using std::ostream;
using std::string;
ParseError::ParseError(int line)
: mLine(line) { }
void BadInputStreamError::describe(ostream& os) const {
os << "Bad input stream provided to parser." << endl;
}
DuplicateBlockError::DuplicateBlockError(int line, const string& block)
: ParseError(line), mBlock(block) { }
void DuplicateBlockError::describe(ostream& os) const {
os << "Parse error: only one " << mBlock << " block per circuit. "
<< "Second definition at line " << mLine << endl;
}
NamesBlockBeforeHeadersError::NamesBlockBeforeHeadersError(int line,
const string& block)
: ParseError(line), mMissing(block) { }
void NamesBlockBeforeHeadersError::describe(ostream& os) const {
os << "Parse error: Must read model, inputs, and outputs blocks before "
<< "any truth tables may be defined. Missing " << mMissing << " block, "
<< "but truth tables are defined at line " << mLine << endl;
}
DuplicateTruthTableError::DuplicateTruthTableError(int line,
const string& name)
: ParseError(line), mName(name) { }
void DuplicateTruthTableError::describe(ostream& os) const {
os << "Parse error: Redefinition of truth table named " << mName
<< " at line " << mLine << endl;
}
UnrecognizedSectionError::UnrecognizedSectionError(int line, const string& sect)
: ParseError(line), mSection(sect) { }
void UnrecognizedSectionError::describe(ostream& os) const {
os << "Unrecognized section type '" << mSection << "' at line " << mLine
<< endl;
}
MissingLogicDependencyError::MissingLogicDependencyError(const string& tt,
const string& name)
: mTruthtable(tt), mInput(name) { }
void MissingLogicDependencyError::describe(ostream& os) const {
os << "Input " << mInput << " to truth table defining " << mTruthtable
<< " is neither defined nor a primary input." << endl;
}
UndefinedPrimaryOutputError::UndefinedPrimaryOutputError(const string& name)
: mOutput(name) { }
void UndefinedPrimaryOutputError::describe(ostream& os) const {
os << "Primary output " << mOutput << " is never defined." << endl;
}
CircularDependencyError::CircularDependencyError(const string& name1,
const string& name2)
: mName1(name1), mName2(name2) { }
void CircularDependencyError::describe(ostream& os) const {
os << "Circuit has circular dependency between " << mName1 << " and "
<< mName2 << "\n(The verifier only supports combinational circuits)"
<< endl;
}
} // namespace blifverifier