/* Graphviz dot file generation. */
char *machineSpec = 0, *machineName = 0;
bool machineSpecFound = false;
+bool wantDupsRemoved = true;
bool printStatistics = false;
bool frontendOnly = false;
void processArgs( int argc, char **argv, char *&inputFileName, char *&outputFileName )
{
- ParamCheck pc("xo:nmleabjkS:M:CDJRvHh?-:sT:F:G:P:LpV", argc, argv);
+ ParamCheck pc("xo:dnmleabjkS:M:CDJRvHh?-:sT:F:G:P:LpV", argc, argv);
while ( pc.check() ) {
switch ( pc.state ) {
break;
/* Minimization, mostly hidden options. */
+ case 'd':
+ wantDupsRemoved = false;
+ frontendArgs.append( "-d" );
+ break;
+
+ /* Minimization, mostly hidden options. */
case 'n':
minimizeOpt = MinimizeNone;
frontendArgs.append( "-n" );
for ( StateList::Iter state = graph->stateList; state.lte(); state++ )
graph->transferErrorActions( state, 0 );
- removeActionDups( graph );
+ if ( ::wantDupsRemoved )
+ removeActionDups( graph );
/* Remove unreachable states. There should be no dead end states. The
* subtract and intersection operators are the only places where they may
extern MinimizeOpt minimizeOpt;
extern char *machineSpec, *machineName;
extern bool printStatistics;
+extern bool wantDupsRemoved;
extern int gblErrorCount;
extern char mainMachine[];