//---------------------------------------------------------------------------
#ifndef lexan_blifH
#define lexan_blifH
//---------------------------------------------------------------------------
#include "lexan.h"
//---------------------------------------------------------------------------
using namespace std;
//---------------------------------------------------------------------------
#define LEX_BLIF_NULL 0
#define LEX_BLIF_ERROR 1
#define LEX_BLIF_DATA 2
//keywords
#define LEX_BLIF_MODEL 101
#define LEX_BLIF_INPUTS 102
#define LEX_BLIF_OUTPUTS 103
#define LEX_BLIF_CLOCK 104
#define LEX_BLIF_END 105

#define LEX_BLIF_NAMES 201

#define LEX_BLIF_EXDC 211

#define LEX_BLIF_LATCH 221

#define LEX_BLIF_GATE 231
#define LEX_BLIF_MLATCH 232

#define LEX_BLIF_SUBCKT 241

#define LEX_BLIF_SEARCH 251

#define LEX_BLIF_START_KISS 261
#define LEX_BLIF_END_KISS 262
#define LEX_BLIF_LATCH_ORDER 263
#define LEX_BLIF_CODE 264

#define LEX_BLIF_CYCLE 271
#define LEX_BLIF_CLOCK_EVENT 272

#define LEX_BLIF_AREA 281
#define LEX_BLIF_DELAY 282
#define LEX_BLIF_WIRE_LOAD_SLOPE 283
#define LEX_BLIF_WIRE 284
#define LEX_BLIF_INPUT_ARRIVAL 285
#define LEX_BLIF_DEFAULT_INPUT_ARRIVAL 286
#define LEX_BLIF_OUTPUT_REQUIRED 287
#define LEX_BLIF_DEFAULT_OUTPUT_REQUIRED 288
#define LEX_BLIF_INPUT_DRIVE 289
#define LEX_BLIF_DEFAULT_INPUT_DRIVE 290
#define LEX_BLIF_OUTPUT_LOAD 291
#define LEX_BLIF_DEFAULT_OUTPUT_LOAD 292

#define LEX_BLIF_KISS_INPUT 301
#define LEX_BLIF_KISS_OUTPUT 302
#define LEX_BLIF_KISS_TERMS 303
#define LEX_BLIF_KISS_STATES 304
#define LEX_BLIF_KISS_RESET 305
//---------------------------------------------------------------------------
class LexanBlif: public Lexan {
private:
  void kw_init();
public:
  LexanBlif() {}
  void init (std::istream&, const std::string&);
  int NextToken ();
};
//---------------------------------------------------------------------------
#endif
