Advertisement
Guest User

gentlejack

a guest
Jan 10th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* VhdlParser.cc */
  2. #include "VhdlParser.h"
  3. #include "TokenMgrError.h"
  4. namespace vhdl {
  5. namespace parser {
  6.   unsigned int jj_la1_0[] = {
  7. 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000,0x0,0x90404000,0x20080000,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x90004000,0x400000,0x0,0x90404000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20080000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x40000000,0x0,0x400000,0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x40020000,0x40020001,0x0,0x0,0x0,0x40000000,0xd0020000,0x0,0x0,0x800000,0x0,0x0,0x80004000,0x400000,0x0,0x0,0x80404000,0x0,0x0,0x0,0x0,0x8000,0x0,0x80000,0x0,0x0,0x0,0x0,0x0,0x0,0x10000,0x10000,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x10000000,0x0,0x50000000,0x8000,0x0,0x80000000,0x0,0x80000000,0x80000000,0x4000000,0x8000000,0x0,0x0,0x20000,0x0,0x0,0x0,0x0,0x800,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x0,0x80004000,0x0,0x80004000,0x0,0x0,0x0,0x0,0x90004000,0x400000,0x0,0x0,0x90404000,0x0,0x0,0x0,0x40000000,0x0,0x0,0x80004000,0x400000,0x0,0x80404000,0x0,0x0,0x8000,0x0,0x0,0x0,0x0,0x20080000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x0,0x20000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x0,0x8000000,0x0,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80004000,0x400000,0x0,0x80404000,0x0,0x0,0x0,0x0,0x0,0x0,0x20080000,0x8000,0x0,0x0,0x41000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x2000,0x0,0x80004000,0x400000,0x0,0x80404000,0x0,0x400000,0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x90c04000,0x20080000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
  8.   unsigned int jj_la1_1[] = {
  9. 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x125808,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000,0x0,0x0,0x1000,0x104800,0x1008,0x20000,0x125808,0x10000,0x0,0x0,0x0,0x0,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000,0x1000,0x1000000,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000,0x20000,0x1000,0x0,0x4000000,0x4000000,0x0,0x400000,0x4000101,0x4000101,0x0,0x10,0x0,0x100,0x12024900,0x0,0x0,0x0,0x100,0x0,0x104800,0x8,0x20000,0x0,0x124808,0x0,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x0,0x0,0x0,0x0,0x81000,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x0,0x0,0x0,0x0,0x0,0x100,0x0,0x0,0x800,0x0,0x0,0x0,0x8a00000,0x0,0x0,0x1000,0x1,0x0,0x0,0x1000,0x0,0x0,0x8a00000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x40000,0x400000,0x0,0x0,0x104800,0x20000,0x124800,0x0,0x0,0x10000,0x10000,0x104800,0x8,0x20000,0x0,0x124808,0x0,0x0,0x0,0x100,0x0,0x0,0x104800,0x0,0x20000,0x124800,0x0,0x0,0x0,0x0,0x1000000,0x0,0x0,0x20081200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000,0x0,0x104000,0x1000000,0x1104800,0x0,0x20000,0x1124800,0x4000,0x0,0x100000,0x100000,0x0,0x104000,0x20081200,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x1104800,0x0,0x20000,0x1124800,0x0,0x104000,0x104000,0x4000001,0x1,0x0,0x4000001,0x10000,0x10000,0x10000,0x0,0x0,0x125808,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x20,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0x200000,0x0,0x0,0x0,0x200000,0x0,0x20,0x104000,0x100000,0x100000,0x0,0x1000000,0x0,0x0,0x104000,};
  10.   unsigned int jj_la1_2[] = {
  11. 0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x110000,0x28000,0x0,0x20000000,0x0,0x0,0x0,0x200000,0x0,0x0,0x0,0x4000,0x0,0x0,0x110000,0x0,0x0,0x110000,0x0,0x4000,0x4000,0x0,0x0,0x0,0x0,0x28000,0x0,0x0,0x0,0x400,0x0,0x4000,0x0,0x0,0x0,0x4000,0x0,0x4000,0x400000,0x8000,0x8000,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x1000000,0x1000,0x1000,0x0,0x0,0x0,0x100,0x11000,0x0,0x0,0x0,0x0,0x0,0x110000,0x0,0x0,0x1000,0x111000,0x0,0x0,0x4000,0x0,0x400,0x8000,0x28000,0x0,0x0,0x0,0x0,0x0,0x0,0x209,0x209,0x0,0x32,0x100,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x32,0x0,0x0,0x0,0x400,0x1000,0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x1000,0x20,0x0,0x0,0x0,0x10,0x800,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x1000,0x0,0x110000,0x0,0x110000,0x1000,0x0,0x0,0x0,0x110000,0x0,0x0,0x1000,0x111000,0x0,0x0,0x2,0x0,0x1000,0x0,0x110000,0x0,0x0,0x110000,0x0,0x8000,0x0,0x0,0x0,0x8000,0x0,0x20000024,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x32,0x200000,0x1000,0x0,0x0,0x20,0xc0000000,0xc0000000,0x0,0x1000000,0x0,0x800000,0x0,0x800000,0x0,0x400,0x0,0x0,0x0,0x0,0x10000,0x0,0x110000,0x0,0x110000,0x0,0x0,0x110000,0x10000,0x0,0x100000,0x100000,0x0,0x110000,0x20000024,0x0,0x0,0x0,0x600000,0x80000,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x32,0x0,0x0,0x110000,0x0,0x0,0x110000,0x0,0x110000,0x110000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x110000,0x28000,0x0,0x0,0x0,0x0,0x0,0x0,0x1000000,0x0,0x0,0x800,0x32,0x0,0x0,0x0,0x0,0x1000000,0x0,0x800,0x0,0x0,0x0,0x800,0x0,0x0,0x110000,0x100000,0x100000,0x0,0x0,0x2000,0x0,0x138000,};
  12.   unsigned int jj_la1_3[] = {
  13. 0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x188830,0x8000000,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x80000,0x0,0x0,0x80000,0x0,0x108830,0x80000,0x0,0x188830,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x0,0x2000000,0x0,0x0,0x0,0x80000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x0,0x0,0x2000000,0x0,0x0,0x80000,0x80000,0x0,0x0,0x80000,0x80000,0x0,0x4000,0x80000,0x80000,0x0,0x2000,0x0,0x0,0x128810,0x0,0x0,0x0,0x0,0x0,0x108830,0x80000,0x0,0x0,0x188830,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x30000000,0x30000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x108030,0x0,0x100030,0x100030,0x0,0x0,0x0,0x4000000,0x0,0x0,0x0,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x0,0x0,0x108030,0x0,0x4000,0x0,0x0,0x188820,0x0,0x188820,0x0,0x0,0x0,0x0,0x108830,0x80000,0x0,0x0,0x188830,0x0,0x0,0x0,0x0,0x0,0x0,0x108820,0x80000,0x0,0x188820,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xd000001,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c0,0x3c0,0x0,0x4000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x108820,0x80000,0x0,0x188820,0x0,0x0,0x0,0x0,0x0,0x0,0xd000001,0x0,0x0,0x8000,0x0,0x0,0x0,0x0,0x8000000,0x20,0x0,0x0,0x0,0x40000,0x0,0x0,0x10000,0x0,0x0,0x108820,0x80000,0x0,0x188820,0x0,0x80000,0x80000,0x80000,0x0,0x0,0x80000,0x0,0x0,0x0,0x2000000,0x0,0x188830,0x8000000,0x100010,0x0,0x0,0x0,0x0,0x0,0x4000,0x0,0x2000000,0x0,0x0,0x8000000,0x0,0x0,0x0,0x4000,0x0,0x0,0x0,0x0,0x0,0x0,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
  14.   unsigned int jj_la1_4[] = {
  15. 0x0,0x0,0x60000,0x30,0x40,0x100,0x0,0x0,0x0,0x0,0x40000,0x0,0x40001,0x0,0x0,0x0,0x0,0x40,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x40001,0x0,0x0,0x0,0x0,0x10000000,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x20000,0x40,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x40000,0x40000,0x40000,0x40000,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x4,0x40001,0x0,0x0,0x40000,0x1,0x0,0x0,0x40000,0x40,0x0,0x40,0x0,0x0,0x0,0x0,0x40,0x40031,0x0,0x1,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x40000008,0x40000,0x40,0x1,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x1,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x1,0x0,0x0,0x0,0x40001,0x1,0x0,0x40000,0xfc00,0xfc00,0x0,0x0,0x0,0x40031,0x1,0x0,0x40,0x40,0x0,0x0,0x0,0x30,0x0,0x40001,0x0,0x80,0x0,0x40,0x40000,0x40,0x40000,0x0,0x30,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1,0x0,0x40001,0x0,0x40001,0x0,0x1,0x0,0x40,0x40,0x40001,0x0,0x80,0x0,0x0,0x0,0x0,0x40,0x40031,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40001,0x0,0xa0000000,0x20000000,0x0,0x1,0x40001,0x0,0x0,0x0,0x0,0x40031,0x0,0x8000000,0x40000,0x8000000,0x0,0x8000000,0x0,0x240,0x240,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x20000,0x0,0x0,0x1,0x0,};
  16.   unsigned int jj_la1_5[] = {
  17. 0x1420,0x0,0x1c0,0x0,0x0,0x0,0x2,0x3c0,0x0,0x0,0x1c0,0x0,0x80001c0,0x0,0x0,0x0,0x180,0x0,0x180,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x180,0x80001c0,0x180,0x0,0x180,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x180,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x0,0x0,0x1c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x0,0x0,0x0,0x8000000,0x8000000,0x2,0x0,0x0,0x3c0,0x3c0,0x1c0,0x1c0,0x3c0,0x380,0x0,0x180,0x180,0x0,0x0,0x0,0x0,0x817e0,0x0,0x0,0x1e0,0x0,0x180,0x0,0x3c0,0x0,0x180,0x0,0x180,0x0,0x0,0x180,0x0,0x817e0,0x0,0x0,0x180,0x180,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x180,0x0,0x180,0x0,0x0,0x0,0x1c0,0x0,0x0,0x0,0x180,0x180,0x0,0x180,0x1420,0x0,0x0,0x0,0x0,0x1c0,0x0,0x0,0x0,0x0,0x1c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x180,0x1c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x180,0x0,0x1c0,0x0,0x0,0x0,0x180,0x1c0,0x0,0x180,0x1c0,0x0,0x0,0x180,0x0,0x180,0x817e0,0x0,0x0,0x0,0x0,0x180,0x0,0x0,0x0,0x0,0x1c0,0x0,0x0,0x0,0x0,0x1c0,0x0,0x1c0,0x0,0x0,0x0,0x1c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x240,0x1c0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x0,0x0,0x180,0x0,0x0,0x0,0x0,0x817e0,0x0,0x180,0x0,0x0,0x0,0x0,0x180,0x0,0x0,0x0,0x0,0x180,0x0,0x0,0x0,0x0,0x0,0x180,0x0,0x80001c0,0x0,0x1,0x0,0x1,0x0,0x1c0,0x0,0x0,0x0,0x0,0x817e0,0x0,0x0,0x1c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x180,0x0,0x0,0x0,0x180,};
  18.  
  19.   /** Constructor with user supplied TokenManager. */
  20.  
  21.  
  22.  
  23.  
  24. QCString VhdlParser::abstract_literal() {Token *tok;
  25.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  26.     case DECIMAL_LITERAL:{if (!hasError) {
  27.      
  28.       tok = jj_consume_token(DECIMAL_LITERAL);
  29.       }
  30.       if (!hasError) {
  31.      
  32. return tok->image.c_str();
  33.       }
  34.      
  35.       break;
  36.       }
  37.     case INTEGER:{if (!hasError) {
  38.      
  39.       tok = jj_consume_token(INTEGER);
  40.       }
  41.       if (!hasError) {
  42.      
  43. return tok->image.c_str();
  44.       }
  45.      
  46.       break;
  47.       }
  48.     case BASED_LITERAL:{if (!hasError) {
  49.      
  50.       tok = jj_consume_token(BASED_LITERAL);
  51.       }
  52.       if (!hasError) {
  53.      
  54. return tok->image.c_str();
  55.       }
  56.      
  57.       break;
  58.       }
  59.     default:
  60.       jj_la1[0] = jj_gen;
  61.       jj_consume_token(-1);
  62.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  63.     }
  64. assert(false);
  65. }
  66.  
  67.  
  68. QCString VhdlParser::access_type_definition() {Token *tok=0;QCString str,str1;if (!hasError) {
  69.    
  70.     tok = jj_consume_token(ACCESS_T);
  71.     }
  72.     if (!hasError) {
  73.    
  74.     str1 = subtype_indication();
  75.     }
  76.    
  77. str=tok->image.c_str(); return str+str1;
  78. assert(false);
  79. }
  80.  
  81.  
  82. QCString VhdlParser::actual_designator() {QCString str;Token *t=0;
  83.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  84.     case OPEN_T:{if (!hasError) {
  85.      
  86.       t = jj_consume_token(OPEN_T);
  87.       }
  88.       if (!hasError) {
  89.      
  90. return t->image.c_str();
  91.       }
  92.      
  93.       break;
  94.       }
  95.     default:
  96.       jj_la1[1] = jj_gen;
  97.       if (jj_2_1(2147483647)) {if (!hasError) {
  98.        
  99.         str = expression();
  100.         }
  101.         if (!hasError) {
  102.        
  103. return str;
  104.         }
  105.        
  106.       } else if (jj_2_2(2147483647)) {if (!hasError) {
  107.        
  108.         str = name();
  109.         }
  110.         if (!hasError) {
  111.        
  112. return str;
  113.         }
  114.        
  115.       } else {
  116.         jj_consume_token(-1);
  117.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  118.       }
  119.     }
  120. assert(false);
  121. }
  122.  
  123.  
  124. QCString VhdlParser::actual_parameter_part() {QCString s;if (!hasError) {
  125.    
  126.     s = association_list();
  127.     }
  128.    
  129. return s;
  130. assert(false);
  131. }
  132.  
  133.  
  134. QCString VhdlParser::actual_part() {QCString s,s1;
  135.     if (jj_2_3(2147483647)) {if (!hasError) {
  136.      
  137.       s = actual_designator();
  138.       }
  139.       if (!hasError) {
  140.      
  141. return s;
  142.       }
  143.      
  144.     } else {
  145.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  146.       case BOX_T:{if (!hasError) {
  147.        
  148.         jj_consume_token(BOX_T);
  149.         }
  150.         if (!hasError) {
  151.        
  152. return "<>";
  153.         }
  154.        
  155.         break;
  156.         }
  157.       case SLSL_T:
  158.       case STRINGLITERAL:
  159.       case BASIC_IDENTIFIER:
  160.       case EXTENDED_CHARACTER:{if (!hasError) {
  161.        
  162.         s = name();
  163.         }
  164.         if (!hasError) {
  165.        
  166.         jj_consume_token(LPAREN_T);
  167.         }
  168.         if (!hasError) {
  169.        
  170.         s1 = actual_designator();
  171.         }
  172.         if (!hasError) {
  173.        
  174.         jj_consume_token(RPAREN_T);
  175.         }
  176.         if (!hasError) {
  177.        
  178. s+="(";s+=s1+")";return s;
  179.         }
  180.        
  181.         break;
  182.         }
  183.       default:
  184.         jj_la1[2] = jj_gen;
  185.         jj_consume_token(-1);
  186.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  187.       }
  188.     }
  189. assert(false);
  190. }
  191.  
  192.  
  193. QCString VhdlParser::adding_operator() {
  194.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  195.     case PLUS_T:{if (!hasError) {
  196.      
  197.       jj_consume_token(PLUS_T);
  198.       }
  199.       if (!hasError) {
  200.      
  201. return "+";
  202.       }
  203.      
  204.       break;
  205.       }
  206.     case MINUS_T:{if (!hasError) {
  207.      
  208.       jj_consume_token(MINUS_T);
  209.       }
  210.       if (!hasError) {
  211.      
  212. return "-";
  213.       }
  214.      
  215.       break;
  216.       }
  217.     case AMPERSAND_T:{if (!hasError) {
  218.      
  219.       jj_consume_token(AMPERSAND_T);
  220.       }
  221.       if (!hasError) {
  222.      
  223. return "&";
  224.       }
  225.      
  226.       break;
  227.       }
  228.     default:
  229.       jj_la1[3] = jj_gen;
  230.       jj_consume_token(-1);
  231.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  232.     }
  233. assert(false);
  234. }
  235.  
  236.  
  237. QCString VhdlParser::aggregate() {QCString s,s1,s2;if (!hasError) {
  238.    
  239.     jj_consume_token(LPAREN_T);
  240.     }
  241.     if (!hasError) {
  242.    
  243.     s = element_association();
  244.     }
  245.     if (!hasError) {
  246.    
  247.     while (!hasError) {
  248.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  249.       case COMMA_T:{
  250.         ;
  251.         break;
  252.         }
  253.       default:
  254.         jj_la1[4] = jj_gen;
  255.         goto end_label_1;
  256.       }if (!hasError) {
  257.      
  258.       jj_consume_token(COMMA_T);
  259.       }
  260.       if (!hasError) {
  261.      
  262.       s1 = element_association();
  263.       }
  264.       if (!hasError) {
  265.      
  266. s+=","+s1;
  267.       }
  268.      
  269.     }
  270.     end_label_1: ;
  271.     }
  272.     if (!hasError) {
  273.    
  274.     jj_consume_token(RPAREN_T);
  275.     }
  276.    
  277. return "("+s+")";
  278. assert(false);
  279. }
  280.  
  281.  
  282. QCString VhdlParser::alias_declaration() {QCString s,s1,s2;if (!hasError) {
  283.    
  284.     jj_consume_token(ALIAS_T);
  285.     }
  286.     if (!hasError) {
  287.    
  288.     s2 = alias_designator();
  289.     }
  290.     if (!hasError) {
  291.    
  292.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  293.     case COLON_T:{if (!hasError) {
  294.      
  295.       jj_consume_token(COLON_T);
  296.       }
  297.       if (!hasError) {
  298.      
  299. s+=":";
  300.       }
  301.       if (!hasError) {
  302.      
  303.       s1 = subtype_indication();
  304.       }
  305.       if (!hasError) {
  306.      
  307. s+=s1;
  308.       }
  309.      
  310.       break;
  311.       }
  312.     default:
  313.       jj_la1[5] = jj_gen;
  314.       ;
  315.     }
  316.     }
  317.     if (!hasError) {
  318.    
  319.     jj_consume_token(IS_T);
  320.     }
  321.     if (!hasError) {
  322.    
  323. s+=" is ";
  324.     }
  325.     if (!hasError) {
  326.    
  327.     s1 = name();
  328.     }
  329.     if (!hasError) {
  330.    
  331. s+=s1;
  332.     }
  333.     if (!hasError) {
  334.    
  335.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  336.     case LBRACKET_T:{if (!hasError) {
  337.      
  338.       s1 = signature();
  339.       }
  340.       if (!hasError) {
  341.      
  342. s+=s1;
  343.       }
  344.      
  345.       break;
  346.       }
  347.     default:
  348.       jj_la1[6] = jj_gen;
  349.       ;
  350.     }
  351.     }
  352.     if (!hasError) {
  353.    
  354.     jj_consume_token(SEMI_T);
  355.     }
  356.    
  357. addVhdlType(s2.data(),getLine(ALIAS_T),Entry::VARIABLE_SEC,VhdlDocGen::ALIAS,0,s.data(),Public);
  358.  
  359.  return s2+" "+s+";";
  360. assert(false);
  361. }
  362.  
  363.  
  364. QCString VhdlParser::alias_designator() {Token *tok=0;QCString s;
  365.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  366.     case BASIC_IDENTIFIER:
  367.     case EXTENDED_CHARACTER:{if (!hasError) {
  368.      
  369.       s = identifier();
  370.       }
  371.       if (!hasError) {
  372.      
  373. return s;
  374.       }
  375.      
  376.       break;
  377.       }
  378.     case CHARACTER_LITERAL:{if (!hasError) {
  379.      
  380.       tok = jj_consume_token(CHARACTER_LITERAL);
  381.       }
  382.       if (!hasError) {
  383.      
  384. return tok->image.c_str();
  385.       }
  386.      
  387.       break;
  388.       }
  389.     case STRINGLITERAL:{if (!hasError) {
  390.      
  391.       s = operator_symbol();
  392.       }
  393.       if (!hasError) {
  394.      
  395. return s;
  396.       }
  397.      
  398.       break;
  399.       }
  400.     default:
  401.       jj_la1[7] = jj_gen;
  402.       jj_consume_token(-1);
  403.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  404.     }
  405. assert(false);
  406. }
  407.  
  408.  
  409. void VhdlParser::allocator() {
  410.     if (jj_2_4(3)) {if (!hasError) {
  411.      
  412.       jj_consume_token(NEW_T);
  413.       }
  414.       if (!hasError) {
  415.      
  416.       qualified_expression();
  417.       }
  418.      
  419.     } else {
  420.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  421.       case NEW_T:{if (!hasError) {
  422.        
  423.         jj_consume_token(NEW_T);
  424.         }
  425.         if (!hasError) {
  426.        
  427.         subtype_indication();
  428.         }
  429.        
  430.         break;
  431.         }
  432.       default:
  433.         jj_la1[8] = jj_gen;
  434.         jj_consume_token(-1);
  435.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  436.       }
  437.     }
  438. }
  439.  
  440.  
  441. void VhdlParser::architecture_body() {QCString s,s1;if (!hasError) {
  442.    
  443.     jj_consume_token(ARCHITECTURE_T);
  444.     }
  445.     if (!hasError) {
  446.    
  447.     s = identifier();
  448.     }
  449.     if (!hasError) {
  450.    
  451.     jj_consume_token(OF_T);
  452.     }
  453.     if (!hasError) {
  454.    
  455.     s1 = name();
  456.     }
  457.     if (!hasError) {
  458.    
  459.     jj_consume_token(IS_T);
  460.     }
  461.     if (!hasError) {
  462.    
  463. QCString t=s1+"::"+s;
  464.                   genLabels.resize(0);
  465.                   pushLabel(genLabels,s1);
  466.                   lastCompound=current;
  467.                   addVhdlType(t,getLine(ARCHITECTURE_T),Entry::CLASS_SEC,VhdlDocGen::ARCHITECTURE,0,0,Private);
  468.     }
  469.     if (!hasError) {
  470.    
  471.     try {if (!hasError) {
  472.      
  473.       architecture_declarative_part();
  474.       }
  475.      
  476.     } catch ( ...) {
  477. error_skipto(BEGIN_T);
  478.     }
  479.     }
  480.     if (!hasError) {
  481.    
  482.     jj_consume_token(BEGIN_T);
  483.     }
  484.     if (!hasError) {
  485.    
  486.     architecture_statement_part();
  487.     }
  488.     if (!hasError) {
  489.    
  490.     jj_consume_token(END_T);
  491.     }
  492.     if (!hasError) {
  493.    
  494.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  495.     case ARCHITECTURE_T:{if (!hasError) {
  496.      
  497.       jj_consume_token(ARCHITECTURE_T);
  498.       }
  499.      
  500.       break;
  501.       }
  502.     default:
  503.       jj_la1[9] = jj_gen;
  504.       ;
  505.     }
  506.     }
  507.     if (!hasError) {
  508.    
  509.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  510.     case SLSL_T:
  511.     case STRINGLITERAL:
  512.     case BASIC_IDENTIFIER:
  513.     case EXTENDED_CHARACTER:{if (!hasError) {
  514.      
  515.       name();
  516.       }
  517.      
  518.       break;
  519.       }
  520.     default:
  521.       jj_la1[10] = jj_gen;
  522.       ;
  523.     }
  524.     }
  525.     if (!hasError) {
  526.    
  527.     jj_consume_token(SEMI_T);
  528.     }
  529.    
  530. lastEntity=0;lastCompound=0; genLabels.resize(0);
  531. }
  532.  
  533.  
  534. void VhdlParser::architecture_declarative_part() {if (!hasError) {
  535.    
  536.     while (!hasError) {
  537.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  538.       case ALIAS_T:
  539.       case ATTRIBUTE_T:
  540.       case COMPONENT_T:
  541.       case CONSTANT_T:
  542.       case DISCONNECT_T:
  543.       case FILE_T:
  544.       case FOR_T:
  545.       case FUNCTION_T:
  546.       case GROUP_T:
  547.       case IMPURE_T:
  548.       case PROCEDURE_T:
  549.       case PURE_T:
  550.       case SIGNAL_T:
  551.       case SHARED_T:
  552.       case SUBTYPE_T:
  553.       case TYPE_T:
  554.       case USE_T:
  555.       case VARIABLE_T:{
  556.         ;
  557.         break;
  558.         }
  559.       default:
  560.         jj_la1[11] = jj_gen;
  561.         goto end_label_2;
  562.       }if (!hasError) {
  563.      
  564.       block_declarative_item();
  565.       }
  566.      
  567.     }
  568.     end_label_2: ;
  569.     }
  570.    
  571. }
  572.  
  573.  
  574. void VhdlParser::architecture_statement_part() {if (!hasError) {
  575.    
  576.     while (!hasError) {
  577.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  578.       case ASSERT_T:
  579.       case CASE_T:
  580.       case POSTPONED_T:
  581.       case PROCESS_T:
  582.       case WITH_T:
  583.       case LPAREN_T:
  584.       case SLSL_T:
  585.       case STRINGLITERAL:
  586.       case BASIC_IDENTIFIER:
  587.       case EXTENDED_CHARACTER:
  588.       case VHDL2008TOOLDIR:{
  589.         ;
  590.         break;
  591.         }
  592.       default:
  593.         jj_la1[12] = jj_gen;
  594.         goto end_label_3;
  595.       }if (!hasError) {
  596.      
  597.       concurrent_statement();
  598.       }
  599.      
  600.     }
  601.     end_label_3: ;
  602.     }
  603.    
  604. }
  605.  
  606.  
  607. QCString VhdlParser::array_type_definition() {QCString s;
  608.     if (jj_2_5(2147483647)) {if (!hasError) {
  609.      
  610.       s = unconstraint_array_definition();
  611.       }
  612.       if (!hasError) {
  613.      
  614. return s;
  615.       }
  616.      
  617.     } else {
  618.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  619.       case ARRAY_T:{if (!hasError) {
  620.        
  621.         s = constraint_array_definition();
  622.         }
  623.         if (!hasError) {
  624.        
  625. return s;
  626.         }
  627.        
  628.         break;
  629.         }
  630.       default:
  631.         jj_la1[13] = jj_gen;
  632.         jj_consume_token(-1);
  633.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  634.       }
  635.     }
  636. assert(false);
  637. }
  638.  
  639.  
  640. QCString VhdlParser::assertion() {QCString s,s1,s2;Token *t=0;Token *t1=0;if (!hasError) {
  641.    
  642.     jj_consume_token(ASSERT_T);
  643.     }
  644.     if (!hasError) {
  645.    
  646.     s = condition();
  647.     }
  648.     if (!hasError) {
  649.    
  650.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  651.     case REPORT_T:{if (!hasError) {
  652.      
  653.       t = jj_consume_token(REPORT_T);
  654.       }
  655.       if (!hasError) {
  656.      
  657.       s1 = expression();
  658.       }
  659.      
  660.       break;
  661.       }
  662.     default:
  663.       jj_la1[14] = jj_gen;
  664.       ;
  665.     }
  666.     }
  667.     if (!hasError) {
  668.    
  669.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  670.     case SEVERITY_T:{if (!hasError) {
  671.      
  672.       t1 = jj_consume_token(SEVERITY_T);
  673.       }
  674.       if (!hasError) {
  675.      
  676.       s2 = expression();
  677.       }
  678.      
  679.       break;
  680.       }
  681.     default:
  682.       jj_la1[15] = jj_gen;
  683.       ;
  684.     }
  685.     }
  686.    
  687. s.prepend("assert ");
  688.    if(t) s1.prepend(" report ");
  689.    if(t1) s2.prepend(" report ");
  690.     return s+s1+s2;
  691. assert(false);
  692. }
  693.  
  694.  
  695. QCString VhdlParser::assertion_statement() {QCString s,s1,s2;Token *t=0;if (!hasError) {
  696.    
  697.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  698.     case BASIC_IDENTIFIER:
  699.     case EXTENDED_CHARACTER:{if (!hasError) {
  700.      
  701.       s = label();
  702.       }
  703.       if (!hasError) {
  704.      
  705.       t = jj_consume_token(COLON_T);
  706.       }
  707.      
  708.       break;
  709.       }
  710.     default:
  711.       jj_la1[16] = jj_gen;
  712.       ;
  713.     }
  714.     }
  715.     if (!hasError) {
  716.    
  717.     s1 = assertion();
  718.     }
  719.     if (!hasError) {
  720.    
  721.     jj_consume_token(SEMI_T);
  722.     }
  723.    
  724. if(t) s+=":";
  725.     return s+s1+";";
  726. assert(false);
  727. }
  728.  
  729.  
  730. QCString VhdlParser::association_element() {QCString s,s1;if (!hasError) {
  731.    
  732.     if (jj_2_6(2147483647)) {if (!hasError) {
  733.      
  734.       s = formal_part();
  735.       }
  736.       if (!hasError) {
  737.      
  738.       jj_consume_token(ARROW_T);
  739.       }
  740.      
  741.     } else {
  742.       ;
  743.     }
  744.     }
  745.     if (!hasError) {
  746.    
  747.     s1 = actual_part();
  748.     }
  749.    
  750. return s+" => "+s1;
  751. assert(false);
  752. }
  753.  
  754.  
  755. QCString VhdlParser::association_list() {QCString s,s1;if (!hasError) {
  756.    
  757.     s = association_element();
  758.     }
  759.     if (!hasError) {
  760.    
  761.     while (!hasError) {
  762.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  763.       case COMMA_T:{
  764.         ;
  765.         break;
  766.         }
  767.       default:
  768.         jj_la1[17] = jj_gen;
  769.         goto end_label_4;
  770.       }if (!hasError) {
  771.      
  772.       jj_consume_token(COMMA_T);
  773.       }
  774.       if (!hasError) {
  775.      
  776.       s1 = association_element();
  777.       }
  778.       if (!hasError) {
  779.      
  780. s+=","+s1;
  781.       }
  782.      
  783.     }
  784.     end_label_4: ;
  785.     }
  786.    
  787. return s;
  788. assert(false);
  789. }
  790.  
  791.  
  792. QCString VhdlParser::attribute_declaration() {QCString s,s1;if (!hasError) {
  793.    
  794.     jj_consume_token(ATTRIBUTE_T);
  795.     }
  796.     if (!hasError) {
  797.    
  798.     s = identifier();
  799.     }
  800.     if (!hasError) {
  801.    
  802.     jj_consume_token(COLON_T);
  803.     }
  804.     if (!hasError) {
  805.    
  806.     s1 = type_mark();
  807.     }
  808.     if (!hasError) {
  809.    
  810.     jj_consume_token(SEMI_T);
  811.     }
  812.    
  813. addVhdlType(s.data(),getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,s1.data(),Public);
  814.     return " attribute "+s+":"+s1+";";
  815. assert(false);
  816. }
  817.  
  818.  
  819. QCString VhdlParser::attribute_designator() {QCString s;Token *tok=0;
  820.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  821.     case BASIC_IDENTIFIER:
  822.     case EXTENDED_CHARACTER:{if (!hasError) {
  823.      
  824.       s = identifier();
  825.       }
  826.       if (!hasError) {
  827.      
  828. return s;
  829.       }
  830.      
  831.       break;
  832.       }
  833.     case RANGE_T:{if (!hasError) {
  834.      
  835.       tok = jj_consume_token(RANGE_T);
  836.       }
  837.       if (!hasError) {
  838.      
  839. return tok->image.c_str();
  840.       }
  841.      
  842.       break;
  843.       }
  844.     default:
  845.       jj_la1[18] = jj_gen;
  846.       jj_consume_token(-1);
  847.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  848.     }
  849. assert(false);
  850. }
  851.  
  852.  
  853. QCString VhdlParser::attribute_name() {QCString s,s1;if (!hasError) {
  854.    
  855.     s = identifier();
  856.     }
  857.     if (!hasError) {
  858.    
  859.     jj_consume_token(APOSTROPHE_T);
  860.     }
  861.     if (!hasError) {
  862.    
  863.     s1 = name();
  864.     }
  865.     if (!hasError) {
  866.    
  867. s+="'"+s1;
  868.     }
  869.     if (!hasError) {
  870.    
  871.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  872.     case LPAREN_T:{if (!hasError) {
  873.      
  874.       jj_consume_token(LPAREN_T);
  875.       }
  876.       if (!hasError) {
  877.      
  878.       s1 = expression();
  879.       }
  880.       if (!hasError) {
  881.      
  882.       jj_consume_token(RPAREN_T);
  883.       }
  884.       if (!hasError) {
  885.      
  886. s+"("+s1+")";
  887.       }
  888.      
  889.       break;
  890.       }
  891.     default:
  892.       jj_la1[19] = jj_gen;
  893.       ;
  894.     }
  895.     }
  896.    
  897. return s;
  898. assert(false);
  899. }
  900.  
  901.  
  902. QCString VhdlParser::attribute_specification() {QCString s,s1,s2;if (!hasError) {
  903.    
  904.     jj_consume_token(ATTRIBUTE_T);
  905.     }
  906.     if (!hasError) {
  907.    
  908.     s = attribute_designator();
  909.     }
  910.     if (!hasError) {
  911.    
  912.     jj_consume_token(OF_T);
  913.     }
  914.     if (!hasError) {
  915.    
  916.     s1 = entity_specification();
  917.     }
  918.     if (!hasError) {
  919.    
  920.     jj_consume_token(IS_T);
  921.     }
  922.     if (!hasError) {
  923.    
  924.     s2 = expression();
  925.     }
  926.     if (!hasError) {
  927.    
  928.     jj_consume_token(SEMI_T);
  929.     }
  930.    
  931. QCString t= s1+" is "+s2;
  932.    addVhdlType(s.data(),getLine(ATTRIBUTE_T),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,t.data(),Public);
  933.    return " attribute "+s+" of "+s1+ " is "+s2+";";
  934. assert(false);
  935. }
  936.  
  937.  
  938. QCString VhdlParser::base() {Token *tok=0;if (!hasError) {
  939.    
  940.     tok = jj_consume_token(INTEGER);
  941.     }
  942.    
  943. return tok->image.c_str();
  944. assert(false);
  945. }
  946.  
  947.  
  948. QCString VhdlParser::base_specifier() {Token *tok=0;if (!hasError) {
  949.    
  950.     tok = jj_consume_token(BASIC_IDENTIFIER);
  951.     }
  952.    
  953. return tok->image.c_str();
  954. assert(false);
  955. }
  956.  
  957.  
  958. QCString VhdlParser::base_unit_declaration() {QCString s;if (!hasError) {
  959.    
  960.     s = identifier();
  961.     }
  962.    
  963. return s;
  964. assert(false);
  965. }
  966.  
  967.  
  968. QCString VhdlParser::based_integer() {Token *tok=0;if (!hasError) {
  969.    
  970.     tok = jj_consume_token(BASIC_IDENTIFIER);
  971.     }
  972.    
  973. return tok->image.c_str();
  974. assert(false);
  975. }
  976.  
  977.  
  978. QCString VhdlParser::based_literal() {Token *tok=0;if (!hasError) {
  979.    
  980.     tok = jj_consume_token(BASED_LITERAL);
  981.     }
  982.    
  983. return tok->image.c_str();
  984. assert(false);
  985. }
  986.  
  987.  
  988. QCString VhdlParser::basic_identifier() {Token *tok=0;if (!hasError) {
  989.    
  990.     tok = jj_consume_token(BASIC_IDENTIFIER);
  991.     }
  992.    
  993. return tok->image.c_str();
  994. assert(false);
  995. }
  996.  
  997.  
  998. void VhdlParser::binding_indication() {if (!hasError) {
  999.    
  1000.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1001.     case USE_T:{if (!hasError) {
  1002.      
  1003.       jj_consume_token(USE_T);
  1004.       }
  1005.       if (!hasError) {
  1006.      
  1007.       entity_aspect();
  1008.       }
  1009.      
  1010.       break;
  1011.       }
  1012.     default:
  1013.       jj_la1[20] = jj_gen;
  1014.       ;
  1015.     }
  1016.     }
  1017.     if (!hasError) {
  1018.    
  1019.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1020.     case GENERIC_T:{if (!hasError) {
  1021.      
  1022.       generic_map_aspect();
  1023.       }
  1024.      
  1025.       break;
  1026.       }
  1027.     default:
  1028.       jj_la1[21] = jj_gen;
  1029.       ;
  1030.     }
  1031.     }
  1032.     if (!hasError) {
  1033.    
  1034.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1035.     case PORT_T:{if (!hasError) {
  1036.      
  1037.       port_map_aspect();
  1038.       }
  1039.      
  1040.       break;
  1041.       }
  1042.     default:
  1043.       jj_la1[22] = jj_gen;
  1044.       ;
  1045.     }
  1046.     }
  1047.    
  1048. }
  1049.  
  1050.  
  1051. QCString VhdlParser::bit_string_literal() {Token *tok=0;if (!hasError) {
  1052.    
  1053.     tok = jj_consume_token(BIT_STRING_LITERAL);
  1054.     }
  1055.    
  1056. return tok->image.c_str();
  1057. assert(false);
  1058. }
  1059.  
  1060.  
  1061. QCString VhdlParser::bit_value() {Token *tok=0;if (!hasError) {
  1062.    
  1063.     tok = jj_consume_token(BASIC_IDENTIFIER);
  1064.     }
  1065.    
  1066. return tok->image.c_str();
  1067. assert(false);
  1068. }
  1069.  
  1070.  
  1071. void VhdlParser::block_configuration() {if (!hasError) {
  1072.    
  1073.     jj_consume_token(FOR_T);
  1074.     }
  1075.     if (!hasError) {
  1076.    
  1077.     block_specification();
  1078.     }
  1079.     if (!hasError) {
  1080.    
  1081.     while (!hasError) {
  1082.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1083.       case USE_T:{
  1084.         ;
  1085.         break;
  1086.         }
  1087.       default:
  1088.         jj_la1[23] = jj_gen;
  1089.         goto end_label_5;
  1090.       }if (!hasError) {
  1091.      
  1092.       use_clause();
  1093.       }
  1094.      
  1095.     }
  1096.     end_label_5: ;
  1097.     }
  1098.     if (!hasError) {
  1099.    
  1100.     while (!hasError) {
  1101.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1102.       case FOR_T:{
  1103.         ;
  1104.         break;
  1105.         }
  1106.       default:
  1107.         jj_la1[24] = jj_gen;
  1108.         goto end_label_6;
  1109.       }if (!hasError) {
  1110.      
  1111.       configuration_item();
  1112.       }
  1113.      
  1114.     }
  1115.     end_label_6: ;
  1116.     }
  1117.     if (!hasError) {
  1118.    
  1119.     jj_consume_token(END_T);
  1120.     }
  1121.     if (!hasError) {
  1122.    
  1123.     jj_consume_token(FOR_T);
  1124.     }
  1125.     if (!hasError) {
  1126.    
  1127.     jj_consume_token(SEMI_T);
  1128.     }
  1129.    
  1130. }
  1131.  
  1132.  
  1133. void VhdlParser::block_declarative_item() {
  1134.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1135.     case FUNCTION_T:
  1136.     case IMPURE_T:
  1137.     case PROCEDURE_T:
  1138.     case PURE_T:{if (!hasError) {
  1139.      
  1140.       subprogram_declaration();
  1141.       }
  1142.      
  1143.       break;
  1144.       }
  1145.     case TYPE_T:{if (!hasError) {
  1146.      
  1147.       type_declaration();
  1148.       }
  1149.      
  1150.       break;
  1151.       }
  1152.     case SUBTYPE_T:{if (!hasError) {
  1153.      
  1154.       subtype_declaration();
  1155.       }
  1156.      
  1157.       break;
  1158.       }
  1159.     case CONSTANT_T:{if (!hasError) {
  1160.      
  1161.       constant_declaration();
  1162.       }
  1163.      
  1164.       break;
  1165.       }
  1166.     case SIGNAL_T:{if (!hasError) {
  1167.      
  1168.       signal_declaration();
  1169.       }
  1170.      
  1171.       break;
  1172.       }
  1173.     case SHARED_T:
  1174.     case VARIABLE_T:{if (!hasError) {
  1175.      
  1176.       variable_declaration();
  1177.       }
  1178.      
  1179.       break;
  1180.       }
  1181.     case FILE_T:{if (!hasError) {
  1182.      
  1183.       file_declaration();
  1184.       }
  1185.      
  1186.       break;
  1187.       }
  1188.     case ALIAS_T:{if (!hasError) {
  1189.      
  1190.       alias_declaration();
  1191.       }
  1192.      
  1193.       break;
  1194.       }
  1195.     case COMPONENT_T:{if (!hasError) {
  1196.      
  1197.       component_declaration();
  1198.       }
  1199.      
  1200.       break;
  1201.       }
  1202.     default:
  1203.       jj_la1[25] = jj_gen;
  1204.       if (jj_2_7(2147483647)) {if (!hasError) {
  1205.        
  1206.         attribute_declaration();
  1207.         }
  1208.        
  1209.       } else {
  1210.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1211.         case ATTRIBUTE_T:{if (!hasError) {
  1212.          
  1213.           attribute_specification();
  1214.           }
  1215.          
  1216.           break;
  1217.           }
  1218.         case FOR_T:{if (!hasError) {
  1219.          
  1220.           configuration_specification();
  1221.           }
  1222.          
  1223.           break;
  1224.           }
  1225.         case DISCONNECT_T:{if (!hasError) {
  1226.          
  1227.           disconnection_specification();
  1228.           }
  1229.          
  1230.           break;
  1231.           }
  1232.         case USE_T:{if (!hasError) {
  1233.          
  1234.           use_clause();
  1235.           }
  1236.          
  1237.           break;
  1238.           }
  1239.         default:
  1240.           jj_la1[26] = jj_gen;
  1241.           if (jj_2_8(3)) {if (!hasError) {
  1242.            
  1243.             group_template_declaration();
  1244.             }
  1245.            
  1246.           } else {
  1247.             switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1248.             case GROUP_T:{if (!hasError) {
  1249.              
  1250.               group_declaration();
  1251.               }
  1252.              
  1253.               break;
  1254.               }
  1255.             default:
  1256.               jj_la1[27] = jj_gen;
  1257.               jj_consume_token(-1);
  1258.               errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  1259.             }
  1260.           }
  1261.         }
  1262.       }
  1263.     }
  1264. }
  1265.  
  1266.  
  1267. void VhdlParser::block_declarative_part() {if (!hasError) {
  1268.    
  1269.     while (!hasError) {
  1270.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1271.       case ALIAS_T:
  1272.       case ATTRIBUTE_T:
  1273.       case COMPONENT_T:
  1274.       case CONSTANT_T:
  1275.       case DISCONNECT_T:
  1276.       case FILE_T:
  1277.       case FOR_T:
  1278.       case FUNCTION_T:
  1279.       case GROUP_T:
  1280.       case IMPURE_T:
  1281.       case PROCEDURE_T:
  1282.       case PURE_T:
  1283.       case SIGNAL_T:
  1284.       case SHARED_T:
  1285.       case SUBTYPE_T:
  1286.       case TYPE_T:
  1287.       case USE_T:
  1288.       case VARIABLE_T:{
  1289.         ;
  1290.         break;
  1291.         }
  1292.       default:
  1293.         jj_la1[28] = jj_gen;
  1294.         goto end_label_7;
  1295.       }if (!hasError) {
  1296.      
  1297.       block_declarative_item();
  1298.       }
  1299.      
  1300.     }
  1301.     end_label_7: ;
  1302.     }
  1303.    
  1304. }
  1305.  
  1306.  
  1307. void VhdlParser::block_header() {if (!hasError) {
  1308.    
  1309.     if (jj_2_9(2147483647)) {if (!hasError) {
  1310.      
  1311.       generic_clause();
  1312.       }
  1313.       if (!hasError) {
  1314.      
  1315.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1316.       case GENERIC_T:{if (!hasError) {
  1317.        
  1318.         generic_map_aspect();
  1319.         }
  1320.         if (!hasError) {
  1321.        
  1322.         jj_consume_token(SEMI_T);
  1323.         }
  1324.        
  1325.         break;
  1326.         }
  1327.       default:
  1328.         jj_la1[29] = jj_gen;
  1329.         ;
  1330.       }
  1331.       }
  1332.      
  1333.     } else {
  1334.       ;
  1335.     }
  1336.     }
  1337.     if (!hasError) {
  1338.    
  1339.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1340.     case PORT_T:{if (!hasError) {
  1341.      
  1342.       port_clause();
  1343.       }
  1344.       if (!hasError) {
  1345.      
  1346.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1347.       case PORT_T:{if (!hasError) {
  1348.        
  1349.         port_map_aspect();
  1350.         }
  1351.         if (!hasError) {
  1352.        
  1353.         jj_consume_token(SEMI_T);
  1354.         }
  1355.        
  1356.         break;
  1357.         }
  1358.       default:
  1359.         jj_la1[30] = jj_gen;
  1360.         ;
  1361.       }
  1362.       }
  1363.      
  1364.       break;
  1365.       }
  1366.     default:
  1367.       jj_la1[31] = jj_gen;
  1368.       ;
  1369.     }
  1370.     }
  1371.    
  1372. }
  1373.  
  1374.  
  1375. void VhdlParser::block_specification() {if (!hasError) {
  1376.    
  1377.     name();
  1378.     }
  1379.     if (!hasError) {
  1380.    
  1381.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1382.     case LPAREN_T:{if (!hasError) {
  1383.      
  1384.       jj_consume_token(LPAREN_T);
  1385.       }
  1386.       if (!hasError) {
  1387.      
  1388.       index_specification();
  1389.       }
  1390.       if (!hasError) {
  1391.      
  1392.       jj_consume_token(RPAREN_T);
  1393.       }
  1394.      
  1395.       break;
  1396.       }
  1397.     default:
  1398.       jj_la1[32] = jj_gen;
  1399.       ;
  1400.     }
  1401.     }
  1402.    
  1403. }
  1404.  
  1405.  
  1406. void VhdlParser::block_statement() {QCString s;if (!hasError) {
  1407.    
  1408.     s = identifier();
  1409.     }
  1410.     if (!hasError) {
  1411.    
  1412.     jj_consume_token(COLON_T);
  1413.     }
  1414.     if (!hasError) {
  1415.    
  1416.     jj_consume_token(BLOCK_T);
  1417.     }
  1418.     if (!hasError) {
  1419.    
  1420. pushLabel(genLabels,s);
  1421.     }
  1422.     if (!hasError) {
  1423.    
  1424.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1425.     case LPAREN_T:{if (!hasError) {
  1426.      
  1427.       jj_consume_token(LPAREN_T);
  1428.       }
  1429.       if (!hasError) {
  1430.      
  1431.       expression();
  1432.       }
  1433.       if (!hasError) {
  1434.      
  1435.       jj_consume_token(RPAREN_T);
  1436.       }
  1437.      
  1438.       break;
  1439.       }
  1440.     default:
  1441.       jj_la1[33] = jj_gen;
  1442.       ;
  1443.     }
  1444.     }
  1445.     if (!hasError) {
  1446.    
  1447.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1448.     case IS_T:{if (!hasError) {
  1449.      
  1450.       jj_consume_token(IS_T);
  1451.       }
  1452.      
  1453.       break;
  1454.       }
  1455.     default:
  1456.       jj_la1[34] = jj_gen;
  1457.       ;
  1458.     }
  1459.     }
  1460.     if (!hasError) {
  1461.    
  1462.     block_header();
  1463.     }
  1464.     if (!hasError) {
  1465.    
  1466.     block_declarative_part();
  1467.     }
  1468.     if (!hasError) {
  1469.    
  1470.     jj_consume_token(BEGIN_T);
  1471.     }
  1472.     if (!hasError) {
  1473.    
  1474.     block_statement_part();
  1475.     }
  1476.     if (!hasError) {
  1477.    
  1478.     jj_consume_token(END_T);
  1479.     }
  1480.     if (!hasError) {
  1481.    
  1482.     jj_consume_token(BLOCK_T);
  1483.     }
  1484.     if (!hasError) {
  1485.    
  1486.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1487.     case BASIC_IDENTIFIER:
  1488.     case EXTENDED_CHARACTER:{if (!hasError) {
  1489.      
  1490.       identifier();
  1491.       }
  1492.      
  1493.       break;
  1494.       }
  1495.     default:
  1496.       jj_la1[35] = jj_gen;
  1497.       ;
  1498.     }
  1499.     }
  1500.     if (!hasError) {
  1501.    
  1502.     jj_consume_token(SEMI_T);
  1503.     }
  1504.    
  1505. genLabels=popLabel(genLabels);
  1506. }
  1507.  
  1508.  
  1509. void VhdlParser::block_statement_part() {if (!hasError) {
  1510.    
  1511.     while (!hasError) {
  1512.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1513.       case ASSERT_T:
  1514.       case CASE_T:
  1515.       case POSTPONED_T:
  1516.       case PROCESS_T:
  1517.       case WITH_T:
  1518.       case LPAREN_T:
  1519.       case SLSL_T:
  1520.       case STRINGLITERAL:
  1521.       case BASIC_IDENTIFIER:
  1522.       case EXTENDED_CHARACTER:
  1523.       case VHDL2008TOOLDIR:{
  1524.         ;
  1525.         break;
  1526.         }
  1527.       default:
  1528.         jj_la1[36] = jj_gen;
  1529.         goto end_label_8;
  1530.       }if (!hasError) {
  1531.      
  1532.       concurrent_statement();
  1533.       }
  1534.      
  1535.     }
  1536.     end_label_8: ;
  1537.     }
  1538.    
  1539. }
  1540.  
  1541.  
  1542. void VhdlParser::case_statement() {QCString s;if (!hasError) {
  1543.    
  1544.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1545.     case BASIC_IDENTIFIER:
  1546.     case EXTENDED_CHARACTER:{if (!hasError) {
  1547.      
  1548.       identifier();
  1549.       }
  1550.       if (!hasError) {
  1551.      
  1552.       jj_consume_token(COLON_T);
  1553.       }
  1554.      
  1555.       break;
  1556.       }
  1557.     default:
  1558.       jj_la1[37] = jj_gen;
  1559.       ;
  1560.     }
  1561.     }
  1562.     if (!hasError) {
  1563.    
  1564.     jj_consume_token(CASE_T);
  1565.     }
  1566.     if (!hasError) {
  1567.    
  1568.     s = expression();
  1569.     }
  1570.     if (!hasError) {
  1571.    
  1572. QCString ca="case "+s;
  1573.      FlowChart::addFlowChart(FlowChart::CASE_NO,0,ca);
  1574.     }
  1575.     if (!hasError) {
  1576.    
  1577.     jj_consume_token(IS_T);
  1578.     }
  1579.     if (!hasError) {
  1580.    
  1581.     case_statement_alternative();
  1582.     }
  1583.     if (!hasError) {
  1584.    
  1585.     while (!hasError) {
  1586.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1587.       case WHEN_T:{
  1588.         ;
  1589.         break;
  1590.         }
  1591.       default:
  1592.         jj_la1[38] = jj_gen;
  1593.         goto end_label_9;
  1594.       }if (!hasError) {
  1595.      
  1596.       case_statement_alternative();
  1597.       }
  1598.      
  1599.     }
  1600.     end_label_9: ;
  1601.     }
  1602.     if (!hasError) {
  1603.    
  1604.     jj_consume_token(END_T);
  1605.     }
  1606.     if (!hasError) {
  1607.    
  1608.     jj_consume_token(CASE_T);
  1609.     }
  1610.     if (!hasError) {
  1611.    
  1612.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1613.     case BASIC_IDENTIFIER:
  1614.     case EXTENDED_CHARACTER:{if (!hasError) {
  1615.      
  1616.       identifier();
  1617.       }
  1618.      
  1619.       break;
  1620.       }
  1621.     default:
  1622.       jj_la1[39] = jj_gen;
  1623.       ;
  1624.     }
  1625.     }
  1626.     if (!hasError) {
  1627.    
  1628.     jj_consume_token(SEMI_T);
  1629.     }
  1630.    
  1631. FlowChart::moveToPrevLevel();
  1632.          FlowChart::addFlowChart(FlowChart::END_CASE,"end case",0);
  1633. }
  1634.  
  1635.  
  1636. void VhdlParser::case_statement_alternative() {QCString s;if (!hasError) {
  1637.    
  1638.     jj_consume_token(WHEN_T);
  1639.     }
  1640.     if (!hasError) {
  1641.    
  1642.     s = choices();
  1643.     }
  1644.     if (!hasError) {
  1645.    
  1646.     jj_consume_token(ARROW_T);
  1647.     }
  1648.     if (!hasError) {
  1649.    
  1650. QCString t="when ";
  1651.     t+=s+"=> ";
  1652.     FlowChart::addFlowChart(FlowChart::WHEN_NO,s.data(),t);
  1653.     }
  1654.     if (!hasError) {
  1655.    
  1656.     sequence_of_statement();
  1657.     }
  1658.    
  1659. FlowChart::moveToPrevLevel();
  1660. }
  1661.  
  1662.  
  1663. QCString VhdlParser::character_literal() {Token *tok=0;if (!hasError) {
  1664.    
  1665.     tok = jj_consume_token(CHARACTER_LITERAL);
  1666.     }
  1667.    
  1668. return tok->image.c_str();
  1669. assert(false);
  1670. }
  1671.  
  1672.  
  1673. QCString VhdlParser::choice() {QCString s;
  1674.     if (jj_2_10(2147483647)) {if (!hasError) {
  1675.      
  1676.       s = discrete_range();
  1677.       }
  1678.       if (!hasError) {
  1679.      
  1680. return s;
  1681.       }
  1682.      
  1683.     } else if (jj_2_11(2147483647)) {if (!hasError) {
  1684.      
  1685.       s = simple_expression();
  1686.       }
  1687.       if (!hasError) {
  1688.      
  1689. return s;
  1690.       }
  1691.      
  1692.     } else if (jj_2_12(2147483647)) {if (!hasError) {
  1693.      
  1694.       s = identifier();
  1695.       }
  1696.       if (!hasError) {
  1697.      
  1698. return s;
  1699.       }
  1700.      
  1701.     } else {
  1702.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1703.       case OTHER_T:{if (!hasError) {
  1704.        
  1705.         jj_consume_token(OTHER_T);
  1706.         }
  1707.         if (!hasError) {
  1708.        
  1709. return " others ";
  1710.         }
  1711.        
  1712.         break;
  1713.         }
  1714.       default:
  1715.         jj_la1[40] = jj_gen;
  1716.         jj_consume_token(-1);
  1717.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  1718.       }
  1719.     }
  1720. assert(false);
  1721. }
  1722.  
  1723.  
  1724. QCString VhdlParser::choices() {QCString s,s1;if (!hasError) {
  1725.    
  1726.     s = choice();
  1727.     }
  1728.     if (!hasError) {
  1729.    
  1730.     while (!hasError) {
  1731.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1732.       case BAR_T:{
  1733.         ;
  1734.         break;
  1735.         }
  1736.       default:
  1737.         jj_la1[41] = jj_gen;
  1738.         goto end_label_10;
  1739.       }if (!hasError) {
  1740.      
  1741.       jj_consume_token(BAR_T);
  1742.       }
  1743.       if (!hasError) {
  1744.      
  1745.       s1 = choice();
  1746.       }
  1747.       if (!hasError) {
  1748.      
  1749. s+="|";s+=s1;
  1750.       }
  1751.      
  1752.     }
  1753.     end_label_10: ;
  1754.     }
  1755.    
  1756. return s;
  1757. assert(false);
  1758. }
  1759.  
  1760.  
  1761. void VhdlParser::component_configuration() {if (!hasError) {
  1762.    
  1763.     jj_consume_token(FOR_T);
  1764.     }
  1765.     if (!hasError) {
  1766.    
  1767.     component_specification();
  1768.     }
  1769.     if (!hasError) {
  1770.    
  1771.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1772.     case GENERIC_T:
  1773.     case PORT_T:
  1774.     case USE_T:
  1775.     case SEMI_T:{if (!hasError) {
  1776.      
  1777.       binding_indication();
  1778.       }
  1779.       if (!hasError) {
  1780.      
  1781.       jj_consume_token(SEMI_T);
  1782.       }
  1783.      
  1784.       break;
  1785.       }
  1786.     default:
  1787.       jj_la1[42] = jj_gen;
  1788.       ;
  1789.     }
  1790.     }
  1791.     if (!hasError) {
  1792.    
  1793.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1794.     case FOR_T:{if (!hasError) {
  1795.      
  1796.       block_configuration();
  1797.       }
  1798.      
  1799.       break;
  1800.       }
  1801.     default:
  1802.       jj_la1[43] = jj_gen;
  1803.       ;
  1804.     }
  1805.     }
  1806.     if (!hasError) {
  1807.    
  1808.     jj_consume_token(END_T);
  1809.     }
  1810.     if (!hasError) {
  1811.    
  1812.     jj_consume_token(FOR_T);
  1813.     }
  1814.     if (!hasError) {
  1815.    
  1816.     jj_consume_token(SEMI_T);
  1817.     }
  1818.    
  1819. }
  1820.  
  1821.  
  1822. void VhdlParser::component_declaration() {QCString s;if (!hasError) {
  1823.    
  1824.     jj_consume_token(COMPONENT_T);
  1825.     }
  1826.     if (!hasError) {
  1827.    
  1828.     s = identifier();
  1829.     }
  1830.     if (!hasError) {
  1831.    
  1832.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1833.     case IS_T:{if (!hasError) {
  1834.      
  1835.       jj_consume_token(IS_T);
  1836.       }
  1837.      
  1838.       break;
  1839.       }
  1840.     default:
  1841.       jj_la1[44] = jj_gen;
  1842.       ;
  1843.     }
  1844.     }
  1845.     if (!hasError) {
  1846.    
  1847. currP=VhdlDocGen::COMPONENT;
  1848.     }
  1849.     if (!hasError) {
  1850.    
  1851.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1852.     case GENERIC_T:{if (!hasError) {
  1853.      
  1854.       generic_clause();
  1855.       }
  1856.      
  1857.       break;
  1858.       }
  1859.     default:
  1860.       jj_la1[45] = jj_gen;
  1861.       ;
  1862.     }
  1863.     }
  1864.     if (!hasError) {
  1865.    
  1866.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1867.     case PORT_T:{if (!hasError) {
  1868.      
  1869.       port_clause();
  1870.       }
  1871.      
  1872.       break;
  1873.       }
  1874.     default:
  1875.       jj_la1[46] = jj_gen;
  1876.       ;
  1877.     }
  1878.     }
  1879.     if (!hasError) {
  1880.    
  1881. addVhdlType(s.data(),getLine(COMPONENT_T),Entry::VARIABLE_SEC,VhdlDocGen::COMPONENT,0,0,Public);
  1882.      currP=0;
  1883.     }
  1884.     if (!hasError) {
  1885.    
  1886.     jj_consume_token(END_T);
  1887.     }
  1888.     if (!hasError) {
  1889.    
  1890.     jj_consume_token(COMPONENT_T);
  1891.     }
  1892.     if (!hasError) {
  1893.    
  1894.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1895.     case BASIC_IDENTIFIER:
  1896.     case EXTENDED_CHARACTER:{if (!hasError) {
  1897.      
  1898.       identifier();
  1899.       }
  1900.      
  1901.       break;
  1902.       }
  1903.     default:
  1904.       jj_la1[47] = jj_gen;
  1905.       ;
  1906.     }
  1907.     }
  1908.     if (!hasError) {
  1909.    
  1910.     jj_consume_token(SEMI_T);
  1911.     }
  1912.    
  1913. }
  1914.  
  1915.  
  1916. void VhdlParser::component_instantiation_statement() {QCString s,s1;if (!hasError) {
  1917.    
  1918.     s = identifier();
  1919.     }
  1920.     if (!hasError) {
  1921.    
  1922.     jj_consume_token(COLON_T);
  1923.     }
  1924.     if (!hasError) {
  1925.    
  1926.     s1 = instantiation_unit();
  1927.     }
  1928.     if (!hasError) {
  1929.    
  1930. QCString s3;
  1931.        if (s1.contains("|")) {
  1932.          s3=VhdlDocGen::getIndexWord(s1.data(),0);
  1933.          s1=VhdlDocGen::getIndexWord(s1.data(),1);
  1934.        }
  1935.  
  1936.        addCompInst(s.lower().data(),s1.lower().data(),s3.data(),getLine());
  1937.     }
  1938.     if (!hasError) {
  1939.    
  1940.     if (jj_2_13(2147483647)) {if (!hasError) {
  1941.      
  1942.       generic_map_aspect();
  1943.       }
  1944.      
  1945.     } else {
  1946.       ;
  1947.     }
  1948.     }
  1949.     if (!hasError) {
  1950.    
  1951.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1952.     case PORT_T:{if (!hasError) {
  1953.      
  1954.       port_map_aspect();
  1955.       }
  1956.      
  1957.       break;
  1958.       }
  1959.     default:
  1960.       jj_la1[48] = jj_gen;
  1961.       ;
  1962.     }
  1963.     }
  1964.     if (!hasError) {
  1965.    
  1966.     jj_consume_token(SEMI_T);
  1967.     }
  1968.    
  1969. }
  1970.  
  1971.  
  1972. void VhdlParser::component_specification() {if (!hasError) {
  1973.    
  1974.     instantiation_list();
  1975.     }
  1976.     if (!hasError) {
  1977.    
  1978.     jj_consume_token(COLON_T);
  1979.     }
  1980.     if (!hasError) {
  1981.    
  1982.     name();
  1983.     }
  1984.    
  1985. }
  1986.  
  1987.  
  1988. QCString VhdlParser::composite_type_definition() {QCString s,s1;
  1989.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  1990.     case ARRAY_T:{if (!hasError) {
  1991.      
  1992.       s = array_type_definition();
  1993.       }
  1994.       if (!hasError) {
  1995.      
  1996. return s;
  1997.       }
  1998.      
  1999.       break;
  2000.       }
  2001.     case RECORD_T:{if (!hasError) {
  2002.      
  2003.       record_type_definition();
  2004.       }
  2005.       if (!hasError) {
  2006.      
  2007. return s+"#";
  2008.       }
  2009.      
  2010.       break;
  2011.       }
  2012.     default:
  2013.       jj_la1[49] = jj_gen;
  2014.       jj_consume_token(-1);
  2015.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  2016.     }
  2017. assert(false);
  2018. }
  2019.  
  2020.  
  2021. void VhdlParser::concurrent_assertion_statement() {if (!hasError) {
  2022.    
  2023.     if (jj_2_14(2)) {if (!hasError) {
  2024.      
  2025.       identifier();
  2026.       }
  2027.       if (!hasError) {
  2028.      
  2029.       jj_consume_token(COLON_T);
  2030.       }
  2031.      
  2032.     } else {
  2033.       ;
  2034.     }
  2035.     }
  2036.     if (!hasError) {
  2037.    
  2038.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2039.     case POSTPONED_T:{if (!hasError) {
  2040.      
  2041.       jj_consume_token(POSTPONED_T);
  2042.       }
  2043.      
  2044.       break;
  2045.       }
  2046.     default:
  2047.       jj_la1[50] = jj_gen;
  2048.       ;
  2049.     }
  2050.     }
  2051.     if (!hasError) {
  2052.    
  2053.     assertion();
  2054.     }
  2055.     if (!hasError) {
  2056.    
  2057.     jj_consume_token(SEMI_T);
  2058.     }
  2059.    
  2060. }
  2061.  
  2062.  
  2063. void VhdlParser::concurrent_procedure_call_statement() {if (!hasError) {
  2064.    
  2065.     if (jj_2_15(2)) {if (!hasError) {
  2066.      
  2067.       identifier();
  2068.       }
  2069.       if (!hasError) {
  2070.      
  2071.       jj_consume_token(COLON_T);
  2072.       }
  2073.      
  2074.     } else {
  2075.       ;
  2076.     }
  2077.     }
  2078.     if (!hasError) {
  2079.    
  2080.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2081.     case POSTPONED_T:{if (!hasError) {
  2082.      
  2083.       jj_consume_token(POSTPONED_T);
  2084.       }
  2085.      
  2086.       break;
  2087.       }
  2088.     default:
  2089.       jj_la1[51] = jj_gen;
  2090.       ;
  2091.     }
  2092.     }
  2093.     if (!hasError) {
  2094.    
  2095.     procedure_call();
  2096.     }
  2097.     if (!hasError) {
  2098.    
  2099.     jj_consume_token(SEMI_T);
  2100.     }
  2101.    
  2102. }
  2103.  
  2104.  
  2105. void VhdlParser::concurrent_signal_assignment_statement() {if (!hasError) {
  2106.    
  2107.     if (jj_2_16(2)) {if (!hasError) {
  2108.      
  2109.       identifier();
  2110.       }
  2111.       if (!hasError) {
  2112.      
  2113.       jj_consume_token(COLON_T);
  2114.       }
  2115.      
  2116.     } else {
  2117.       ;
  2118.     }
  2119.     }
  2120.     if (!hasError) {
  2121.    
  2122.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2123.     case POSTPONED_T:{if (!hasError) {
  2124.      
  2125.       jj_consume_token(POSTPONED_T);
  2126.       }
  2127.      
  2128.       break;
  2129.       }
  2130.     default:
  2131.       jj_la1[52] = jj_gen;
  2132.       ;
  2133.     }
  2134.     }
  2135.     if (!hasError) {
  2136.    
  2137.     if (jj_2_17(2147483647)) {if (!hasError) {
  2138.      
  2139.       conditional_signal_assignment();
  2140.       }
  2141.      
  2142.     } else {
  2143.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2144.       case WITH_T:{if (!hasError) {
  2145.        
  2146.         selected_signal_assignment();
  2147.         }
  2148.        
  2149.         break;
  2150.         }
  2151.       default:
  2152.         jj_la1[53] = jj_gen;
  2153.         jj_consume_token(-1);
  2154.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  2155.       }
  2156.     }
  2157.     }
  2158.    
  2159. }
  2160.  
  2161.  
  2162. void VhdlParser::concurrent_statement() {
  2163.     if (jj_2_18(2147483647)) {if (!hasError) {
  2164.      
  2165.       block_statement();
  2166.       }
  2167.      
  2168.     } else if (jj_2_19(2147483647)) {if (!hasError) {
  2169.      
  2170.       process_statement();
  2171.       }
  2172.      
  2173.     } else if (jj_2_20(2147483647)) {if (!hasError) {
  2174.      
  2175.       generate_statement();
  2176.       }
  2177.      
  2178.     } else {
  2179.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2180.       case CASE_T:{if (!hasError) {
  2181.        
  2182.         case_scheme();
  2183.         }
  2184.        
  2185.         break;
  2186.         }
  2187.       default:
  2188.         jj_la1[54] = jj_gen;
  2189.         if (jj_2_21(2147483647)) {if (!hasError) {
  2190.          
  2191.           concurrent_assertion_statement();
  2192.           }
  2193.          
  2194.         } else if (jj_2_22(2147483647)) {if (!hasError) {
  2195.          
  2196.           concurrent_signal_assignment_statement();
  2197.           }
  2198.          
  2199.         } else if (jj_2_23(2147483647)) {if (!hasError) {
  2200.          
  2201.           component_instantiation_statement();
  2202.           }
  2203.          
  2204.         } else if (jj_2_24(2147483647)) {if (!hasError) {
  2205.          
  2206.           concurrent_procedure_call_statement();
  2207.           }
  2208.          
  2209.         } else {
  2210.           switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2211.           case VHDL2008TOOLDIR:{if (!hasError) {
  2212.            
  2213.             jj_consume_token(VHDL2008TOOLDIR);
  2214.             }
  2215.            
  2216.             break;
  2217.             }
  2218.           default:
  2219.             jj_la1[55] = jj_gen;
  2220.             jj_consume_token(-1);
  2221.             errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  2222.           }
  2223.         }
  2224.       }
  2225.     }
  2226. }
  2227.  
  2228.  
  2229. QCString VhdlParser::condition() {QCString s;if (!hasError) {
  2230.    
  2231.     s = expression();
  2232.     }
  2233.    
  2234. return s;
  2235. assert(false);
  2236. }
  2237.  
  2238.  
  2239. QCString VhdlParser::condition_clause() {QCString s;if (!hasError) {
  2240.    
  2241.     jj_consume_token(UNTIL_T);
  2242.     }
  2243.     if (!hasError) {
  2244.    
  2245.     s = condition();
  2246.     }
  2247.    
  2248. return " until "+s;
  2249. assert(false);
  2250. }
  2251.  
  2252.  
  2253. void VhdlParser::conditional_signal_assignment() {if (!hasError) {
  2254.    
  2255.     target();
  2256.     }
  2257.     if (!hasError) {
  2258.    
  2259.     jj_consume_token(LESSTHAN_T);
  2260.     }
  2261.     if (!hasError) {
  2262.    
  2263.     options();
  2264.     }
  2265.     if (!hasError) {
  2266.    
  2267.     conditional_waveforms();
  2268.     }
  2269.     if (!hasError) {
  2270.    
  2271.     jj_consume_token(SEMI_T);
  2272.     }
  2273.    
  2274. }
  2275.  
  2276.  
  2277. void VhdlParser::conditional_waveforms() {if (!hasError) {
  2278.    
  2279.     waveform();
  2280.     }
  2281.     if (!hasError) {
  2282.    
  2283.     while (!hasError) {
  2284.       if (jj_2_25(2147483647)) {
  2285.         ;
  2286.       } else {
  2287.         goto end_label_11;
  2288.       }if (!hasError) {
  2289.      
  2290.       jj_consume_token(WHEN_T);
  2291.       }
  2292.       if (!hasError) {
  2293.      
  2294.       condition();
  2295.       }
  2296.       if (!hasError) {
  2297.      
  2298.       jj_consume_token(ELSE_T);
  2299.       }
  2300.       if (!hasError) {
  2301.      
  2302.       waveform();
  2303.       }
  2304.      
  2305.     }
  2306.     end_label_11: ;
  2307.     }
  2308.     if (!hasError) {
  2309.    
  2310.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2311.     case WHEN_T:{if (!hasError) {
  2312.      
  2313.       jj_consume_token(WHEN_T);
  2314.       }
  2315.       if (!hasError) {
  2316.      
  2317.       condition();
  2318.       }
  2319.      
  2320.       break;
  2321.       }
  2322.     default:
  2323.       jj_la1[56] = jj_gen;
  2324.       ;
  2325.     }
  2326.     }
  2327.    
  2328. }
  2329.  
  2330.  
  2331. void VhdlParser::configuration_declaration() {QCString s,s1;if (!hasError) {
  2332.    
  2333.     jj_consume_token(CONFIGURATION_T);
  2334.     }
  2335.     if (!hasError) {
  2336.    
  2337.     s = identifier();
  2338.     }
  2339.     if (!hasError) {
  2340.    
  2341.     jj_consume_token(OF_T);
  2342.     }
  2343.     if (!hasError) {
  2344.    
  2345.     s1 = name();
  2346.     }
  2347.     if (!hasError) {
  2348.    
  2349.     jj_consume_token(IS_T);
  2350.     }
  2351.     if (!hasError) {
  2352.    
  2353. confName=s+"::"+s1;
  2354.   addVhdlType(s.data(),getLine(CONFIGURATION_T),Entry::VARIABLE_SEC,VhdlDocGen::CONFIG,"configuration",s1.data(),Public);
  2355.     }
  2356.     if (!hasError) {
  2357.    
  2358.     configuration_declarative_part();
  2359.     }
  2360.     if (!hasError) {
  2361.    
  2362.     block_configuration();
  2363.     }
  2364.     if (!hasError) {
  2365.    
  2366.     jj_consume_token(END_T);
  2367.     }
  2368.     if (!hasError) {
  2369.    
  2370.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2371.     case CONFIGURATION_T:{if (!hasError) {
  2372.      
  2373.       jj_consume_token(CONFIGURATION_T);
  2374.       }
  2375.      
  2376.       break;
  2377.       }
  2378.     default:
  2379.       jj_la1[57] = jj_gen;
  2380.       ;
  2381.     }
  2382.     }
  2383.     if (!hasError) {
  2384.    
  2385.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2386.     case SLSL_T:
  2387.     case STRINGLITERAL:
  2388.     case BASIC_IDENTIFIER:
  2389.     case EXTENDED_CHARACTER:{if (!hasError) {
  2390.      
  2391.       name();
  2392.       }
  2393.      
  2394.       break;
  2395.       }
  2396.     default:
  2397.       jj_la1[58] = jj_gen;
  2398.       ;
  2399.     }
  2400.     }
  2401.     if (!hasError) {
  2402.    
  2403.     jj_consume_token(SEMI_T);
  2404.     }
  2405.    
  2406. genLabels.resize(0); confName="";
  2407. }
  2408.  
  2409.  
  2410. void VhdlParser::configuration_declarative_item() {
  2411.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2412.     case USE_T:{if (!hasError) {
  2413.      
  2414.       use_clause();
  2415.       }
  2416.      
  2417.       break;
  2418.       }
  2419.     case ATTRIBUTE_T:{if (!hasError) {
  2420.      
  2421.       attribute_specification();
  2422.       }
  2423.      
  2424.       break;
  2425.       }
  2426.     case GROUP_T:{if (!hasError) {
  2427.      
  2428.       group_declaration();
  2429.       }
  2430.      
  2431.       break;
  2432.       }
  2433.     default:
  2434.       jj_la1[59] = jj_gen;
  2435.       jj_consume_token(-1);
  2436.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  2437.     }
  2438. }
  2439.  
  2440.  
  2441. void VhdlParser::configuration_declarative_part() {if (!hasError) {
  2442.    
  2443.     while (!hasError) {
  2444.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2445.       case ATTRIBUTE_T:
  2446.       case GROUP_T:
  2447.       case USE_T:{
  2448.         ;
  2449.         break;
  2450.         }
  2451.       default:
  2452.         jj_la1[60] = jj_gen;
  2453.         goto end_label_12;
  2454.       }if (!hasError) {
  2455.      
  2456.       configuration_declarative_item();
  2457.       }
  2458.      
  2459.     }
  2460.     end_label_12: ;
  2461.     }
  2462.    
  2463. }
  2464.  
  2465.  
  2466. void VhdlParser::configuration_item() {
  2467.     if (jj_2_26(2147483647)) {if (!hasError) {
  2468.      
  2469.       component_configuration();
  2470.       }
  2471.      
  2472.     } else {
  2473.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2474.       case FOR_T:{if (!hasError) {
  2475.        
  2476.         block_configuration();
  2477.         }
  2478.        
  2479.         break;
  2480.         }
  2481.       default:
  2482.         jj_la1[61] = jj_gen;
  2483.         jj_consume_token(-1);
  2484.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  2485.       }
  2486.     }
  2487. }
  2488.  
  2489.  
  2490. void VhdlParser::configuration_specification() {if (!hasError) {
  2491.    
  2492.     jj_consume_token(FOR_T);
  2493.     }
  2494.     if (!hasError) {
  2495.    
  2496.     component_specification();
  2497.     }
  2498.     if (!hasError) {
  2499.    
  2500.     binding_indication();
  2501.     }
  2502.     if (!hasError) {
  2503.    
  2504.     jj_consume_token(SEMI_T);
  2505.     }
  2506.    
  2507. }
  2508.  
  2509.  
  2510. QCString VhdlParser::constant_declaration() {QCString s,s1,s2;Token *t=0;if (!hasError) {
  2511.    
  2512.     jj_consume_token(CONSTANT_T);
  2513.     }
  2514.     if (!hasError) {
  2515.    
  2516.     s = identifier_list();
  2517.     }
  2518.     if (!hasError) {
  2519.    
  2520.     jj_consume_token(COLON_T);
  2521.     }
  2522.     if (!hasError) {
  2523.    
  2524.     s1 = subtype_indication();
  2525.     }
  2526.     if (!hasError) {
  2527.    
  2528.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2529.     case VARASSIGN_T:{if (!hasError) {
  2530.      
  2531.       t = jj_consume_token(VARASSIGN_T);
  2532.       }
  2533.       if (!hasError) {
  2534.      
  2535.       s2 = expression();
  2536.       }
  2537.      
  2538.       break;
  2539.       }
  2540.     default:
  2541.       jj_la1[62] = jj_gen;
  2542.       ;
  2543.     }
  2544.     }
  2545.     if (!hasError) {
  2546.    
  2547.     jj_consume_token(SEMI_T);
  2548.     }
  2549.    
  2550. if(t)
  2551.       s2.prepend(":=");
  2552.      QCString it=s1+s2;
  2553.      addVhdlType(s.data(),getLine(CONSTANT_T),Entry::VARIABLE_SEC,VhdlDocGen::CONSTANT,0,it.data(),Public);
  2554.      it.prepend("constant ");
  2555.      return it;
  2556. assert(false);
  2557. }
  2558.  
  2559.  
  2560. QCString VhdlParser::constraint_array_definition() {QCString s,s1;if (!hasError) {
  2561.    
  2562.     jj_consume_token(ARRAY_T);
  2563.     }
  2564.     if (!hasError) {
  2565.    
  2566.     s = index_constraint();
  2567.     }
  2568.     if (!hasError) {
  2569.    
  2570.     jj_consume_token(OF_T);
  2571.     }
  2572.     if (!hasError) {
  2573.    
  2574.     s1 = subtype_indication();
  2575.     }
  2576.    
  2577. return s+" "+s1;
  2578. assert(false);
  2579. }
  2580.  
  2581.  
  2582. void VhdlParser::context_clause() {if (!hasError) {
  2583.    
  2584.     while (!hasError) {
  2585.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2586.       case LIBRARY_T:
  2587.       case USE_T:{
  2588.         ;
  2589.         break;
  2590.         }
  2591.       default:
  2592.         jj_la1[63] = jj_gen;
  2593.         goto end_label_13;
  2594.       }if (!hasError) {
  2595.      
  2596.       context_item();
  2597.       }
  2598.      
  2599.     }
  2600.     end_label_13: ;
  2601.     }
  2602.    
  2603. }
  2604.  
  2605.  
  2606. QCString VhdlParser::constraint() {QCString s;
  2607.     if (jj_2_27(2147483647)) {if (!hasError) {
  2608.      
  2609.       s = range_constraint();
  2610.       }
  2611.       if (!hasError) {
  2612.      
  2613. return s;
  2614.       }
  2615.      
  2616.     } else if (jj_2_28(2147483647)) {if (!hasError) {
  2617.      
  2618.       s = index_constraint();
  2619.       }
  2620.       if (!hasError) {
  2621.      
  2622. return s;
  2623.       }
  2624.      
  2625.     } else {
  2626.       jj_consume_token(-1);
  2627.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  2628.     }
  2629. assert(false);
  2630. }
  2631.  
  2632.  
  2633. void VhdlParser::context_item() {
  2634.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2635.     case LIBRARY_T:{if (!hasError) {
  2636.      
  2637.       library_clause();
  2638.       }
  2639.      
  2640.       break;
  2641.       }
  2642.     case USE_T:{if (!hasError) {
  2643.      
  2644.       use_clause();
  2645.       }
  2646.      
  2647.       break;
  2648.       }
  2649.     default:
  2650.       jj_la1[64] = jj_gen;
  2651.       jj_consume_token(-1);
  2652.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  2653.     }
  2654. }
  2655.  
  2656.  
  2657. QCString VhdlParser::decimal_literal() {Token *tok=0;if (!hasError) {
  2658.    
  2659.     tok = jj_consume_token(DECIMAL_LITERAL);
  2660.     }
  2661.    
  2662. return tok->image.c_str();
  2663. assert(false);
  2664. }
  2665.  
  2666.  
  2667. QCString VhdlParser::delay_mechanism() {QCString s;
  2668.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2669.     case TRANSPORT_T:{if (!hasError) {
  2670.      
  2671.       jj_consume_token(TRANSPORT_T);
  2672.       }
  2673.       if (!hasError) {
  2674.      
  2675. return " transport ";
  2676.       }
  2677.      
  2678.       break;
  2679.       }
  2680.     case INERTIAL_T:
  2681.     case REJECT_T:{if (!hasError) {
  2682.      
  2683.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2684.       case REJECT_T:{if (!hasError) {
  2685.        
  2686.         jj_consume_token(REJECT_T);
  2687.         }
  2688.         if (!hasError) {
  2689.        
  2690.         s = expression();
  2691.         }
  2692.         if (!hasError) {
  2693.        
  2694. s.prepend(" reject ");
  2695.         }
  2696.        
  2697.         break;
  2698.         }
  2699.       default:
  2700.         jj_la1[65] = jj_gen;
  2701.         ;
  2702.       }
  2703.       }
  2704.       if (!hasError) {
  2705.      
  2706.       jj_consume_token(INERTIAL_T);
  2707.       }
  2708.       if (!hasError) {
  2709.      
  2710. return s+" inertial ";
  2711.       }
  2712.      
  2713.       break;
  2714.       }
  2715.     default:
  2716.       jj_la1[66] = jj_gen;
  2717.       jj_consume_token(-1);
  2718.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  2719.     }
  2720. assert(false);
  2721. }
  2722.  
  2723.  
  2724. void VhdlParser::design_file() {
  2725.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2726.     case ARCHITECTURE_T:
  2727.     case CONFIGURATION_T:
  2728.     case CONTEXT_T:
  2729.     case ENTITY_T:
  2730.     case LIBRARY_T:
  2731.     case PACKAGE_T:
  2732.     case USE_T:{if (!hasError) {
  2733.      
  2734.       while (!hasError) {if (!hasError) {
  2735.        
  2736.         design_unit();
  2737.         }
  2738.        
  2739.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2740.         case ARCHITECTURE_T:
  2741.         case CONFIGURATION_T:
  2742.         case CONTEXT_T:
  2743.         case ENTITY_T:
  2744.         case LIBRARY_T:
  2745.         case PACKAGE_T:
  2746.         case USE_T:{
  2747.           ;
  2748.           break;
  2749.           }
  2750.         default:
  2751.           jj_la1[67] = jj_gen;
  2752.           goto end_label_14;
  2753.         }
  2754.       }
  2755.       end_label_14: ;
  2756.       }
  2757.       if (!hasError) {
  2758.      
  2759.  
  2760.       }
  2761.      
  2762.       break;
  2763.       }
  2764.     case 0:{if (!hasError) {
  2765.      
  2766.       jj_consume_token(0);
  2767.       }
  2768.      
  2769.       break;
  2770.       }
  2771.     default:
  2772.       jj_la1[68] = jj_gen;
  2773.       jj_consume_token(-1);
  2774.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  2775.     }
  2776. }
  2777.  
  2778.  
  2779. void VhdlParser::design_unit() {if (!hasError) {
  2780.    
  2781.     context_clause();
  2782.     }
  2783.     if (!hasError) {
  2784.    
  2785.     library_unit();
  2786.     }
  2787.    
  2788. }
  2789.  
  2790.  
  2791. QCString VhdlParser::designator() {QCString s;
  2792.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2793.     case BASIC_IDENTIFIER:
  2794.     case EXTENDED_CHARACTER:{if (!hasError) {
  2795.      
  2796.       s = identifier();
  2797.       }
  2798.       if (!hasError) {
  2799.      
  2800. return s;
  2801.       }
  2802.      
  2803.       break;
  2804.       }
  2805.     case STRINGLITERAL:{if (!hasError) {
  2806.      
  2807.       s = operator_symbol();
  2808.       }
  2809.       if (!hasError) {
  2810.      
  2811. return s;
  2812.       }
  2813.      
  2814.       break;
  2815.       }
  2816.     default:
  2817.       jj_la1[69] = jj_gen;
  2818.       jj_consume_token(-1);
  2819.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  2820.     }
  2821. assert(false);
  2822. }
  2823.  
  2824.  
  2825. QCString VhdlParser::direction() {Token *tok=0;
  2826.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2827.     case TO_T:{if (!hasError) {
  2828.      
  2829.       tok = jj_consume_token(TO_T);
  2830.       }
  2831.       if (!hasError) {
  2832.      
  2833. return tok->image.c_str();
  2834.       }
  2835.      
  2836.       break;
  2837.       }
  2838.     case DOWNTO_T:{if (!hasError) {
  2839.      
  2840.       tok = jj_consume_token(DOWNTO_T);
  2841.       }
  2842.       if (!hasError) {
  2843.      
  2844. return tok->image.c_str();
  2845.       }
  2846.      
  2847.       break;
  2848.       }
  2849.     default:
  2850.       jj_la1[70] = jj_gen;
  2851.       jj_consume_token(-1);
  2852.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  2853.     }
  2854. assert(false);
  2855. }
  2856.  
  2857.  
  2858. void VhdlParser::disconnection_specification() {if (!hasError) {
  2859.    
  2860.     jj_consume_token(DISCONNECT_T);
  2861.     }
  2862.     if (!hasError) {
  2863.    
  2864.     guarded_signal_specificatio();
  2865.     }
  2866.     if (!hasError) {
  2867.    
  2868.     jj_consume_token(AFTER_T);
  2869.     }
  2870.     if (!hasError) {
  2871.    
  2872.     expression();
  2873.     }
  2874.     if (!hasError) {
  2875.    
  2876.     jj_consume_token(SEMI_T);
  2877.     }
  2878.    
  2879. }
  2880.  
  2881.  
  2882. void VhdlParser::guarded_signal_specificatio() {if (!hasError) {
  2883.    
  2884.     signal_list();
  2885.     }
  2886.     if (!hasError) {
  2887.    
  2888.     jj_consume_token(COLON_T);
  2889.     }
  2890.     if (!hasError) {
  2891.    
  2892.     name();
  2893.     }
  2894.    
  2895. }
  2896.  
  2897.  
  2898. QCString VhdlParser::discrete_range() {QCString s;
  2899.     if (jj_2_29(2147483647)) {if (!hasError) {
  2900.      
  2901.       s = range();
  2902.       }
  2903.       if (!hasError) {
  2904.      
  2905. return s;
  2906.       }
  2907.      
  2908.     } else if (jj_2_30(2147483647)) {if (!hasError) {
  2909.      
  2910.       s = subtype_indication();
  2911.       }
  2912.       if (!hasError) {
  2913.      
  2914. return s;
  2915.       }
  2916.      
  2917.     } else {
  2918.       jj_consume_token(-1);
  2919.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  2920.     }
  2921. assert(false);
  2922. }
  2923.  
  2924.  
  2925. QCString VhdlParser::element_association() {QCString s,s1;if (!hasError) {
  2926.    
  2927.     if (jj_2_31(2147483647)) {if (!hasError) {
  2928.      
  2929.       s = choices();
  2930.       }
  2931.       if (!hasError) {
  2932.      
  2933.       jj_consume_token(ARROW_T);
  2934.       }
  2935.      
  2936.     } else {
  2937.       ;
  2938.     }
  2939.     }
  2940.     if (!hasError) {
  2941.    
  2942.     s1 = expression();
  2943.     }
  2944.    
  2945. if(!s.isEmpty())
  2946.  return s+"=>"+s1;
  2947. return s1;
  2948. assert(false);
  2949. }
  2950.  
  2951.  
  2952. QCString VhdlParser::element_declaration() {QCString s,s1;if (!hasError) {
  2953.    
  2954.     s = identifier_list();
  2955.     }
  2956.     if (!hasError) {
  2957.    
  2958.     jj_consume_token(COLON_T);
  2959.     }
  2960.     if (!hasError) {
  2961.    
  2962.     s1 = subtype_indication();
  2963.     }
  2964.     if (!hasError) {
  2965.    
  2966.     jj_consume_token(SEMI_T);
  2967.     }
  2968.    
  2969. addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s1.data(),Public);
  2970.   //addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s1.data(),Public);
  2971.   return s+":"+s1;
  2972. assert(false);
  2973. }
  2974.  
  2975.  
  2976. QCString VhdlParser::entity_aspect() {Token *tok=0;QCString s,s1;
  2977.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2978.     case ENTITY_T:{if (!hasError) {
  2979.      
  2980.       tok = jj_consume_token(ENTITY_T);
  2981.       }
  2982.       if (!hasError) {
  2983.      
  2984.       s = name();
  2985.       }
  2986.       if (!hasError) {
  2987.      
  2988.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  2989.       case LPAREN_T:{if (!hasError) {
  2990.        
  2991.         jj_consume_token(LPAREN_T);
  2992.         }
  2993.         if (!hasError) {
  2994.        
  2995.         s1 = identifier();
  2996.         }
  2997.         if (!hasError) {
  2998.        
  2999.         jj_consume_token(RPAREN_T);
  3000.         }
  3001.         if (!hasError) {
  3002.        
  3003. s+="("+s1+")";
  3004.         }
  3005.        
  3006.         break;
  3007.         }
  3008.       default:
  3009.         jj_la1[71] = jj_gen;
  3010.         ;
  3011.       }
  3012.       }
  3013.       if (!hasError) {
  3014.      
  3015. return s;
  3016.       }
  3017.      
  3018.       break;
  3019.       }
  3020.     case CONFIGURATION_T:{if (!hasError) {
  3021.      
  3022.       tok = jj_consume_token(CONFIGURATION_T);
  3023.       }
  3024.       if (!hasError) {
  3025.      
  3026.       s = name();
  3027.       }
  3028.       if (!hasError) {
  3029.      
  3030. return tok->image.c_str()+s;
  3031.       }
  3032.      
  3033.       break;
  3034.       }
  3035.     case OPEN_T:{if (!hasError) {
  3036.      
  3037.       tok = jj_consume_token(OPEN_T);
  3038.       }
  3039.       if (!hasError) {
  3040.      
  3041. return tok->image.c_str();
  3042.       }
  3043.      
  3044.       break;
  3045.       }
  3046.     default:
  3047.       jj_la1[72] = jj_gen;
  3048.       jj_consume_token(-1);
  3049.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  3050.     }
  3051. assert(false);
  3052. }
  3053.  
  3054.  
  3055. QCString VhdlParser::entity_class() {
  3056.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3057.     case ENTITY_T:{if (!hasError) {
  3058.      
  3059.       jj_consume_token(ENTITY_T);
  3060.       }
  3061.       if (!hasError) {
  3062.      
  3063. return "entity";
  3064.       }
  3065.      
  3066.       break;
  3067.       }
  3068.     case ARCHITECTURE_T:{if (!hasError) {
  3069.      
  3070.       jj_consume_token(ARCHITECTURE_T);
  3071.       }
  3072.       if (!hasError) {
  3073.      
  3074. return "architecture";
  3075.       }
  3076.      
  3077.       break;
  3078.       }
  3079.     case CONFIGURATION_T:{if (!hasError) {
  3080.      
  3081.       jj_consume_token(CONFIGURATION_T);
  3082.       }
  3083.       if (!hasError) {
  3084.      
  3085. return "configuration";
  3086.       }
  3087.      
  3088.       break;
  3089.       }
  3090.     case PROCEDURE_T:{if (!hasError) {
  3091.      
  3092.       jj_consume_token(PROCEDURE_T);
  3093.       }
  3094.       if (!hasError) {
  3095.      
  3096. return "procedure";
  3097.       }
  3098.      
  3099.       break;
  3100.       }
  3101.     case FUNCTION_T:{if (!hasError) {
  3102.      
  3103.       jj_consume_token(FUNCTION_T);
  3104.       }
  3105.       if (!hasError) {
  3106.      
  3107. return "function";
  3108.       }
  3109.      
  3110.       break;
  3111.       }
  3112.     case PACKAGE_T:{if (!hasError) {
  3113.      
  3114.       jj_consume_token(PACKAGE_T);
  3115.       }
  3116.       if (!hasError) {
  3117.      
  3118. return "package";
  3119.       }
  3120.      
  3121.       break;
  3122.       }
  3123.     case TYPE_T:{if (!hasError) {
  3124.      
  3125.       jj_consume_token(TYPE_T);
  3126.       }
  3127.       if (!hasError) {
  3128.      
  3129. return "type";
  3130.       }
  3131.      
  3132.       break;
  3133.       }
  3134.     case SUBTYPE_T:{if (!hasError) {
  3135.      
  3136.       jj_consume_token(SUBTYPE_T);
  3137.       }
  3138.       if (!hasError) {
  3139.      
  3140. return "subtype";
  3141.       }
  3142.      
  3143.       break;
  3144.       }
  3145.     case CONSTANT_T:{if (!hasError) {
  3146.      
  3147.       jj_consume_token(CONSTANT_T);
  3148.       }
  3149.       if (!hasError) {
  3150.      
  3151. return "constant";
  3152.       }
  3153.      
  3154.       break;
  3155.       }
  3156.     case SIGNAL_T:{if (!hasError) {
  3157.      
  3158.       jj_consume_token(SIGNAL_T);
  3159.       }
  3160.       if (!hasError) {
  3161.      
  3162. return "signal";
  3163.       }
  3164.      
  3165.       break;
  3166.       }
  3167.     case VARIABLE_T:{if (!hasError) {
  3168.      
  3169.       jj_consume_token(VARIABLE_T);
  3170.       }
  3171.       if (!hasError) {
  3172.      
  3173. return "variable";
  3174.       }
  3175.      
  3176.       break;
  3177.       }
  3178.     case COMPONENT_T:{if (!hasError) {
  3179.      
  3180.       jj_consume_token(COMPONENT_T);
  3181.       }
  3182.       if (!hasError) {
  3183.      
  3184. return "component";
  3185.       }
  3186.      
  3187.       break;
  3188.       }
  3189.     case LABEL_T:{if (!hasError) {
  3190.      
  3191.       jj_consume_token(LABEL_T);
  3192.       }
  3193.       if (!hasError) {
  3194.      
  3195. return "label";
  3196.       }
  3197.      
  3198.       break;
  3199.       }
  3200.     case LITERAL_T:{if (!hasError) {
  3201.      
  3202.       jj_consume_token(LITERAL_T);
  3203.       }
  3204.       if (!hasError) {
  3205.      
  3206. return "literal";
  3207.       }
  3208.      
  3209.       break;
  3210.       }
  3211.     case UNITS_T:{if (!hasError) {
  3212.      
  3213.       jj_consume_token(UNITS_T);
  3214.       }
  3215.       if (!hasError) {
  3216.      
  3217. return "units";
  3218.       }
  3219.      
  3220.       break;
  3221.       }
  3222.     case GROUP_T:{if (!hasError) {
  3223.      
  3224.       jj_consume_token(GROUP_T);
  3225.       }
  3226.       if (!hasError) {
  3227.      
  3228. return "group";
  3229.       }
  3230.      
  3231.       break;
  3232.       }
  3233.     case FILE_T:{if (!hasError) {
  3234.      
  3235.       jj_consume_token(FILE_T);
  3236.       }
  3237.       if (!hasError) {
  3238.      
  3239. return "file";
  3240.       }
  3241.      
  3242.       break;
  3243.       }
  3244.     default:
  3245.       jj_la1[73] = jj_gen;
  3246.       jj_consume_token(-1);
  3247.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  3248.     }
  3249. assert(false);
  3250. }
  3251.  
  3252.  
  3253. QCString VhdlParser::entity_class_entry() {QCString s;if (!hasError) {
  3254.    
  3255.     s = entity_class();
  3256.     }
  3257.     if (!hasError) {
  3258.    
  3259.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3260.     case BOX_T:{if (!hasError) {
  3261.      
  3262.       jj_consume_token(BOX_T);
  3263.       }
  3264.       if (!hasError) {
  3265.      
  3266. s+="<>";
  3267.       }
  3268.      
  3269.       break;
  3270.       }
  3271.     default:
  3272.       jj_la1[74] = jj_gen;
  3273.       ;
  3274.     }
  3275.     }
  3276.    
  3277. return s;
  3278. assert(false);
  3279. }
  3280.  
  3281.  
  3282. QCString VhdlParser::entity_class_entry_list() {QCString s,s1,s2;if (!hasError) {
  3283.     if (!hasError) {
  3284.    
  3285.     s1 = entity_class_entry();
  3286.     }
  3287.     if (!hasError) {
  3288.    
  3289. s+=s1;
  3290.     }
  3291.    
  3292.     }
  3293.     if (!hasError) {
  3294.    
  3295.     while (!hasError) {
  3296.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3297.       case COMMA_T:{
  3298.         ;
  3299.         break;
  3300.         }
  3301.       default:
  3302.         jj_la1[75] = jj_gen;
  3303.         goto end_label_15;
  3304.       }if (!hasError) {
  3305.      
  3306.       jj_consume_token(COMMA_T);
  3307.       }
  3308.       if (!hasError) {
  3309.      
  3310.       s = entity_class_entry();
  3311.       }
  3312.       if (!hasError) {
  3313.      
  3314. s2+=",";s2+=s;
  3315.       }
  3316.      
  3317.     }
  3318.     end_label_15: ;
  3319.     }
  3320.    
  3321. return s1+s2;
  3322. assert(false);
  3323. }
  3324.  
  3325.  
  3326. void VhdlParser::entity_declaration() {QCString s;if (!hasError) {
  3327.    
  3328.     jj_consume_token(ENTITY_T);
  3329.     }
  3330.     if (!hasError) {
  3331.    
  3332.     s = identifier();
  3333.     }
  3334.     if (!hasError) {
  3335.    
  3336.     jj_consume_token(IS_T);
  3337.     }
  3338.     if (!hasError) {
  3339.    
  3340. lastEntity=current;
  3341.                 lastCompound=0;
  3342.                 addVhdlType(s.data(),getLine(ENTITY_T),Entry::CLASS_SEC,VhdlDocGen::ENTITY,0,0,Public);
  3343.     }
  3344.     if (!hasError) {
  3345.    
  3346.     entity_header();
  3347.     }
  3348.     if (!hasError) {
  3349.    
  3350.     entity_declarative_part();
  3351.     }
  3352.     if (!hasError) {
  3353.    
  3354.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3355.     case BEGIN_T:{if (!hasError) {
  3356.      
  3357.       jj_consume_token(BEGIN_T);
  3358.       }
  3359.       if (!hasError) {
  3360.      
  3361.       entity_statement_part();
  3362.       }
  3363.      
  3364.       break;
  3365.       }
  3366.     default:
  3367.       jj_la1[76] = jj_gen;
  3368.       ;
  3369.     }
  3370.     }
  3371.     if (!hasError) {
  3372.    
  3373.     jj_consume_token(END_T);
  3374.     }
  3375.     if (!hasError) {
  3376.    
  3377.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3378.     case ENTITY_T:{if (!hasError) {
  3379.      
  3380.       jj_consume_token(ENTITY_T);
  3381.       }
  3382.      
  3383.       break;
  3384.       }
  3385.     default:
  3386.       jj_la1[77] = jj_gen;
  3387.       ;
  3388.     }
  3389.     }
  3390.     if (!hasError) {
  3391.    
  3392.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3393.     case SLSL_T:
  3394.     case STRINGLITERAL:
  3395.     case BASIC_IDENTIFIER:
  3396.     case EXTENDED_CHARACTER:{if (!hasError) {
  3397.      
  3398.       name();
  3399.       }
  3400.      
  3401.       break;
  3402.       }
  3403.     default:
  3404.       jj_la1[78] = jj_gen;
  3405.       ;
  3406.     }
  3407.     }
  3408.     if (!hasError) {
  3409.    
  3410.     jj_consume_token(SEMI_T);
  3411.     }
  3412.    
  3413. lastEntity=0;lastCompound=0; genLabels.resize(0);
  3414. }
  3415.  
  3416.  
  3417. void VhdlParser::entity_declarative_item() {
  3418.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3419.     case FUNCTION_T:
  3420.     case IMPURE_T:
  3421.     case PROCEDURE_T:
  3422.     case PURE_T:{if (!hasError) {
  3423.      
  3424.       subprogram_declaration();
  3425.       }
  3426.      
  3427.       break;
  3428.       }
  3429.     case TYPE_T:{if (!hasError) {
  3430.      
  3431.       type_declaration();
  3432.       }
  3433.      
  3434.       break;
  3435.       }
  3436.     case SUBTYPE_T:{if (!hasError) {
  3437.      
  3438.       subtype_declaration();
  3439.       }
  3440.      
  3441.       break;
  3442.       }
  3443.     case CONSTANT_T:{if (!hasError) {
  3444.      
  3445.       constant_declaration();
  3446.       }
  3447.      
  3448.       break;
  3449.       }
  3450.     case SIGNAL_T:{if (!hasError) {
  3451.      
  3452.       signal_declaration();
  3453.       }
  3454.      
  3455.       break;
  3456.       }
  3457.     case SHARED_T:
  3458.     case VARIABLE_T:{if (!hasError) {
  3459.      
  3460.       variable_declaration();
  3461.       }
  3462.      
  3463.       break;
  3464.       }
  3465.     case FILE_T:{if (!hasError) {
  3466.      
  3467.       file_declaration();
  3468.       }
  3469.      
  3470.       break;
  3471.       }
  3472.     case ALIAS_T:{if (!hasError) {
  3473.      
  3474.       alias_declaration();
  3475.       }
  3476.      
  3477.       break;
  3478.       }
  3479.     default:
  3480.       jj_la1[79] = jj_gen;
  3481.       if (jj_2_32(2147483647)) {if (!hasError) {
  3482.        
  3483.         attribute_declaration();
  3484.         }
  3485.        
  3486.       } else {
  3487.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3488.         case ATTRIBUTE_T:{if (!hasError) {
  3489.          
  3490.           attribute_specification();
  3491.           }
  3492.          
  3493.           break;
  3494.           }
  3495.         case DISCONNECT_T:{if (!hasError) {
  3496.          
  3497.           disconnection_specification();
  3498.           }
  3499.          
  3500.           break;
  3501.           }
  3502.         case USE_T:{if (!hasError) {
  3503.          
  3504.           use_clause();
  3505.           }
  3506.          
  3507.           break;
  3508.           }
  3509.         default:
  3510.           jj_la1[80] = jj_gen;
  3511.           if (jj_2_33(3)) {if (!hasError) {
  3512.            
  3513.             group_template_declaration();
  3514.             }
  3515.            
  3516.           } else {
  3517.             switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3518.             case GROUP_T:{if (!hasError) {
  3519.              
  3520.               group_declaration();
  3521.               }
  3522.              
  3523.               break;
  3524.               }
  3525.             default:
  3526.               jj_la1[81] = jj_gen;
  3527.               if (jj_2_34(5)) {if (!hasError) {
  3528.                
  3529.                 package_instantiation_declaration();
  3530.                 }
  3531.                
  3532.               } else {
  3533.                 switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3534.                 case PACKAGE_T:{if (!hasError) {
  3535.                  
  3536.                   package_declaration();
  3537.                   }
  3538.                  
  3539.                   break;
  3540.                   }
  3541.                 case VHDL2008TOOLDIR:{if (!hasError) {
  3542.                  
  3543.                   jj_consume_token(VHDL2008TOOLDIR);
  3544.                   }
  3545.                  
  3546.                   break;
  3547.                   }
  3548.                 default:
  3549.                   jj_la1[82] = jj_gen;
  3550.                   jj_consume_token(-1);
  3551.                   errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  3552.                 }
  3553.               }
  3554.             }
  3555.           }
  3556.         }
  3557.       }
  3558.     }
  3559. }
  3560.  
  3561.  
  3562. void VhdlParser::entity_declarative_part() {if (!hasError) {
  3563.    
  3564.     while (!hasError) {
  3565.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3566.       case ALIAS_T:
  3567.       case ATTRIBUTE_T:
  3568.       case CONSTANT_T:
  3569.       case DISCONNECT_T:
  3570.       case FILE_T:
  3571.       case FUNCTION_T:
  3572.       case GROUP_T:
  3573.       case IMPURE_T:
  3574.       case PACKAGE_T:
  3575.       case PROCEDURE_T:
  3576.       case PURE_T:
  3577.       case SIGNAL_T:
  3578.       case SHARED_T:
  3579.       case SUBTYPE_T:
  3580.       case TYPE_T:
  3581.       case USE_T:
  3582.       case VARIABLE_T:
  3583.       case VHDL2008TOOLDIR:{
  3584.         ;
  3585.         break;
  3586.         }
  3587.       default:
  3588.         jj_la1[83] = jj_gen;
  3589.         goto end_label_16;
  3590.       }if (!hasError) {
  3591.      
  3592.       entity_declarative_item();
  3593.       }
  3594.      
  3595.     }
  3596.     end_label_16: ;
  3597.     }
  3598.    
  3599. }
  3600.  
  3601.  
  3602. QCString VhdlParser::entity_designator() {QCString s,s1;if (!hasError) {
  3603.    
  3604.     s = entity_tag();
  3605.     }
  3606.     if (!hasError) {
  3607.    
  3608.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3609.     case LBRACKET_T:{if (!hasError) {
  3610.      
  3611.       s1 = signature();
  3612.       }
  3613.      
  3614.       break;
  3615.       }
  3616.     default:
  3617.       jj_la1[84] = jj_gen;
  3618.       ;
  3619.     }
  3620.     }
  3621.    
  3622. return s+s1;
  3623. assert(false);
  3624. }
  3625.  
  3626.  
  3627. void VhdlParser::entity_header() {if (!hasError) {
  3628.    
  3629.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3630.     case GENERIC_T:{if (!hasError) {
  3631.      
  3632. currP=VhdlDocGen::GENERIC;parse_sec=GEN_SEC;
  3633.       }
  3634.       if (!hasError) {
  3635.      
  3636.       generic_clause();
  3637.       }
  3638.      
  3639.       break;
  3640.       }
  3641.     default:
  3642.       jj_la1[85] = jj_gen;
  3643.       ;
  3644.     }
  3645.     }
  3646.     if (!hasError) {
  3647.    
  3648.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3649.     case PORT_T:{if (!hasError) {
  3650.      
  3651. currP=VhdlDocGen::PORT;
  3652.       }
  3653.       if (!hasError) {
  3654.      
  3655.       port_clause();
  3656.       }
  3657.      
  3658.       break;
  3659.       }
  3660.     default:
  3661.       jj_la1[86] = jj_gen;
  3662.       ;
  3663.     }
  3664.     }
  3665.    
  3666. }
  3667.  
  3668.  
  3669. QCString VhdlParser::entity_name_list() {QCString s,s1;
  3670.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3671.     case SLSL_T:
  3672.     case STRINGLITERAL:
  3673.     case BASIC_IDENTIFIER:
  3674.     case EXTENDED_CHARACTER:
  3675.     case CHARACTER_LITERAL:{if (!hasError) {
  3676.      
  3677.       while (!hasError) {if (!hasError) {
  3678.        
  3679.         s1 = entity_designator();
  3680.         }
  3681.         if (!hasError) {
  3682.        
  3683. s+=s1;
  3684.         }
  3685.        
  3686.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3687.         case SLSL_T:
  3688.         case STRINGLITERAL:
  3689.         case BASIC_IDENTIFIER:
  3690.         case EXTENDED_CHARACTER:
  3691.         case CHARACTER_LITERAL:{
  3692.           ;
  3693.           break;
  3694.           }
  3695.         default:
  3696.           jj_la1[87] = jj_gen;
  3697.           goto end_label_17;
  3698.         }
  3699.       }
  3700.       end_label_17: ;
  3701.       }
  3702.       if (!hasError) {
  3703.      
  3704. return s;
  3705.       }
  3706.      
  3707.       break;
  3708.       }
  3709.     case OTHER_T:{if (!hasError) {
  3710.      
  3711.       jj_consume_token(OTHER_T);
  3712.       }
  3713.       if (!hasError) {
  3714.      
  3715. return "other";
  3716.       }
  3717.      
  3718.       break;
  3719.       }
  3720.     case ALL_T:{if (!hasError) {
  3721.      
  3722.       jj_consume_token(ALL_T);
  3723.       }
  3724.       if (!hasError) {
  3725.      
  3726. return "all";
  3727.       }
  3728.      
  3729.       break;
  3730.       }
  3731.     default:
  3732.       jj_la1[88] = jj_gen;
  3733.       jj_consume_token(-1);
  3734.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  3735.     }
  3736. assert(false);
  3737. }
  3738.  
  3739.  
  3740. QCString VhdlParser::entity_specification() {QCString s,s1;if (!hasError) {
  3741.    
  3742.     s = entity_name_list();
  3743.     }
  3744.     if (!hasError) {
  3745.    
  3746.     jj_consume_token(COLON_T);
  3747.     }
  3748.     if (!hasError) {
  3749.    
  3750.     s1 = entity_class();
  3751.     }
  3752.    
  3753. return s+":"+s1;
  3754. assert(false);
  3755. }
  3756.  
  3757.  
  3758. void VhdlParser::entity_statement() {
  3759.     if (jj_2_35(2147483647)) {if (!hasError) {
  3760.      
  3761.       concurrent_assertion_statement();
  3762.       }
  3763.      
  3764.     } else if (jj_2_36(2147483647)) {if (!hasError) {
  3765.      
  3766.       process_statement();
  3767.       }
  3768.      
  3769.     } else {
  3770.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3771.       case POSTPONED_T:
  3772.       case SLSL_T:
  3773.       case STRINGLITERAL:
  3774.       case BASIC_IDENTIFIER:
  3775.       case EXTENDED_CHARACTER:{if (!hasError) {
  3776.        
  3777.         concurrent_procedure_call_statement();
  3778.         }
  3779.        
  3780.         break;
  3781.         }
  3782.       default:
  3783.         jj_la1[89] = jj_gen;
  3784.         jj_consume_token(-1);
  3785.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  3786.       }
  3787.     }
  3788. }
  3789.  
  3790.  
  3791. void VhdlParser::entity_statement_part() {if (!hasError) {
  3792.    
  3793.     while (!hasError) {
  3794.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3795.       case ASSERT_T:
  3796.       case POSTPONED_T:
  3797.       case PROCESS_T:
  3798.       case SLSL_T:
  3799.       case STRINGLITERAL:
  3800.       case BASIC_IDENTIFIER:
  3801.       case EXTENDED_CHARACTER:{
  3802.         ;
  3803.         break;
  3804.         }
  3805.       default:
  3806.         jj_la1[90] = jj_gen;
  3807.         goto end_label_18;
  3808.       }if (!hasError) {
  3809.      
  3810.       entity_statement();
  3811.       }
  3812.      
  3813.     }
  3814.     end_label_18: ;
  3815.     }
  3816.    
  3817. }
  3818.  
  3819.  
  3820. QCString VhdlParser::entity_tag() {QCString s;
  3821.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3822.     case SLSL_T:
  3823.     case STRINGLITERAL:
  3824.     case BASIC_IDENTIFIER:
  3825.     case EXTENDED_CHARACTER:{if (!hasError) {
  3826.      
  3827.       s = name();
  3828.       }
  3829.       if (!hasError) {
  3830.      
  3831. return s;
  3832.       }
  3833.      
  3834.       break;
  3835.       }
  3836.     case CHARACTER_LITERAL:{if (!hasError) {
  3837.      
  3838.       s = character_literal();
  3839.       }
  3840.       if (!hasError) {
  3841.      
  3842. return s;
  3843.       }
  3844.      
  3845.       break;
  3846.       }
  3847.     default:
  3848.       jj_la1[91] = jj_gen;
  3849.       jj_consume_token(-1);
  3850.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  3851.     }
  3852. assert(false);
  3853. }
  3854.  
  3855.  
  3856. QCString VhdlParser::enumeration_literal() {QCString s;
  3857.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3858.     case BASIC_IDENTIFIER:
  3859.     case EXTENDED_CHARACTER:{if (!hasError) {
  3860.      
  3861.       s = identifier();
  3862.       }
  3863.       if (!hasError) {
  3864.      
  3865. return s;
  3866.       }
  3867.      
  3868.       break;
  3869.       }
  3870.     case CHARACTER_LITERAL:{if (!hasError) {
  3871.      
  3872.       s = character_literal();
  3873.       }
  3874.       if (!hasError) {
  3875.      
  3876. return s;
  3877.       }
  3878.      
  3879.       break;
  3880.       }
  3881.     default:
  3882.       jj_la1[92] = jj_gen;
  3883.       jj_consume_token(-1);
  3884.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  3885.     }
  3886. assert(false);
  3887. }
  3888.  
  3889.  
  3890. QCString VhdlParser::enumeration_type_definition() {QCString s,s1;if (!hasError) {
  3891.    
  3892.     jj_consume_token(LPAREN_T);
  3893.     }
  3894.     if (!hasError) {
  3895.    
  3896.     s = enumeration_literal();
  3897.     }
  3898.     if (!hasError) {
  3899.    
  3900.     while (!hasError) {
  3901.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3902.       case COMMA_T:{
  3903.         ;
  3904.         break;
  3905.         }
  3906.       default:
  3907.         jj_la1[93] = jj_gen;
  3908.         goto end_label_19;
  3909.       }if (!hasError) {
  3910.      
  3911.       jj_consume_token(COMMA_T);
  3912.       }
  3913.       if (!hasError) {
  3914.      
  3915.       s1 = enumeration_literal();
  3916.       }
  3917.       if (!hasError) {
  3918.      
  3919. s+=",";s+=s1;
  3920.       }
  3921.      
  3922.     }
  3923.     end_label_19: ;
  3924.     }
  3925.     if (!hasError) {
  3926.    
  3927.     jj_consume_token(RPAREN_T);
  3928.     }
  3929.    
  3930. return "("+s+")";
  3931. assert(false);
  3932. }
  3933.  
  3934.  
  3935. QCString VhdlParser::exit_statement() {QCString s,s1,s2;Token *t=0;Token *t1=0;if (!hasError) {
  3936.    
  3937.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3938.     case BASIC_IDENTIFIER:
  3939.     case EXTENDED_CHARACTER:{if (!hasError) {
  3940.      
  3941.       s = identifier();
  3942.       }
  3943.       if (!hasError) {
  3944.      
  3945.       t = jj_consume_token(COLON_T);
  3946.       }
  3947.      
  3948.       break;
  3949.       }
  3950.     default:
  3951.       jj_la1[94] = jj_gen;
  3952.       ;
  3953.     }
  3954.     }
  3955.     if (!hasError) {
  3956.    
  3957.     jj_consume_token(EXIT_T);
  3958.     }
  3959.     if (!hasError) {
  3960.    
  3961.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3962.     case BASIC_IDENTIFIER:
  3963.     case EXTENDED_CHARACTER:{if (!hasError) {
  3964.      
  3965.       s1 = identifier();
  3966.       }
  3967.      
  3968.       break;
  3969.       }
  3970.     default:
  3971.       jj_la1[95] = jj_gen;
  3972.       ;
  3973.     }
  3974.     }
  3975.     if (!hasError) {
  3976.    
  3977.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  3978.     case WHEN_T:{if (!hasError) {
  3979.      
  3980.       t1 = jj_consume_token(WHEN_T);
  3981.       }
  3982.       if (!hasError) {
  3983.      
  3984.       s2 = condition();
  3985.       }
  3986.      
  3987.       break;
  3988.       }
  3989.     default:
  3990.       jj_la1[96] = jj_gen;
  3991.       ;
  3992.     }
  3993.     }
  3994.     if (!hasError) {
  3995.    
  3996.     jj_consume_token(SEMI_T);
  3997.     }
  3998.    
  3999. lab.resize(0);
  4000.   if(t) s+=":";
  4001.   if(t1) s2.prepend(" when ");
  4002.    FlowChart::addFlowChart(FlowChart::EXIT_NO,"exit",s2.data(),s1.data());
  4003.  
  4004.   return s+s1+s2+";";
  4005. assert(false);
  4006. }
  4007.  
  4008.  
  4009. QCString VhdlParser::expression() {QCString s,s1,s2;if (!hasError) {
  4010.    
  4011.     s = relation();
  4012.     }
  4013.     if (!hasError) {
  4014.    
  4015.     while (!hasError) {
  4016.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4017.       case AND_T:
  4018.       case NAND_T:
  4019.       case NOR_T:
  4020.       case OR_T:
  4021.       case XOR_T:
  4022.       case XNOR_T:{
  4023.         ;
  4024.         break;
  4025.         }
  4026.       default:
  4027.         jj_la1[97] = jj_gen;
  4028.         goto end_label_20;
  4029.       }if (!hasError) {
  4030.      
  4031.       s1 = logop();
  4032.       }
  4033.       if (!hasError) {
  4034.      
  4035.       s2 = relation();
  4036.       }
  4037.       if (!hasError) {
  4038.      
  4039. s+=s1;s+=s2;
  4040.       }
  4041.      
  4042.     }
  4043.     end_label_20: ;
  4044.     }
  4045.    
  4046. return s;
  4047. assert(false);
  4048. }
  4049.  
  4050.  
  4051. QCString VhdlParser::logop() {
  4052.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4053.     case AND_T:{if (!hasError) {
  4054.      
  4055.       jj_consume_token(AND_T);
  4056.       }
  4057.       if (!hasError) {
  4058.      
  4059. return "and" ;
  4060.       }
  4061.      
  4062.       break;
  4063.       }
  4064.     case NAND_T:{if (!hasError) {
  4065.      
  4066.       jj_consume_token(NAND_T);
  4067.       }
  4068.       if (!hasError) {
  4069.      
  4070. return "nand" ;
  4071.       }
  4072.      
  4073.       break;
  4074.       }
  4075.     case NOR_T:{if (!hasError) {
  4076.      
  4077.       jj_consume_token(NOR_T);
  4078.       }
  4079.       if (!hasError) {
  4080.      
  4081. return "nor" ;
  4082.       }
  4083.      
  4084.       break;
  4085.       }
  4086.     case XNOR_T:{if (!hasError) {
  4087.      
  4088.       jj_consume_token(XNOR_T);
  4089.       }
  4090.       if (!hasError) {
  4091.      
  4092. return "xnor" ;
  4093.       }
  4094.      
  4095.       break;
  4096.       }
  4097.     case XOR_T:{if (!hasError) {
  4098.      
  4099.       jj_consume_token(XOR_T);
  4100.       }
  4101.       if (!hasError) {
  4102.      
  4103. return "xor" ;
  4104.       }
  4105.      
  4106.       break;
  4107.       }
  4108.     case OR_T:{if (!hasError) {
  4109.      
  4110.       jj_consume_token(OR_T);
  4111.       }
  4112.       if (!hasError) {
  4113.      
  4114. return "or" ;
  4115.       }
  4116.      
  4117.       break;
  4118.       }
  4119.     default:
  4120.       jj_la1[98] = jj_gen;
  4121.       jj_consume_token(-1);
  4122.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  4123.     }
  4124. assert(false);
  4125. }
  4126.  
  4127.  
  4128. QCString VhdlParser::extended_identifier() {Token *t;if (!hasError) {
  4129.    
  4130.     t = jj_consume_token(EXTENDED_CHARACTER);
  4131.     }
  4132.    
  4133. return t->image.c_str();
  4134. assert(false);
  4135. }
  4136.  
  4137.  
  4138. QCString VhdlParser::factor() {QCString s,s1;
  4139.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4140.     case NEW_T:
  4141.     case NULL_T:
  4142.     case LPAREN_T:
  4143.     case SLSL_T:
  4144.     case INTEGER:
  4145.     case STRINGLITERAL:
  4146.     case BASIC_IDENTIFIER:
  4147.     case EXTENDED_CHARACTER:
  4148.     case CHARACTER_LITERAL:
  4149.     case DECIMAL_LITERAL:
  4150.     case BASED_LITERAL:
  4151.     case BIT_STRING_LITERAL:{if (!hasError) {
  4152.      
  4153.       s = primary();
  4154.       }
  4155.       if (!hasError) {
  4156.      
  4157.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4158.       case DOUBLEMULT_T:{if (!hasError) {
  4159.        
  4160.         jj_consume_token(DOUBLEMULT_T);
  4161.         }
  4162.         if (!hasError) {
  4163.        
  4164.         s1 = primary();
  4165.         }
  4166.         if (!hasError) {
  4167.        
  4168. s+="**";s+=s1;
  4169.         }
  4170.        
  4171.         break;
  4172.         }
  4173.       default:
  4174.         jj_la1[99] = jj_gen;
  4175.         ;
  4176.       }
  4177.       }
  4178.       if (!hasError) {
  4179.      
  4180. return s;
  4181.       }
  4182.      
  4183.       break;
  4184.       }
  4185.     case ABS_T:{if (!hasError) {
  4186.      
  4187.       jj_consume_token(ABS_T);
  4188.       }
  4189.       if (!hasError) {
  4190.      
  4191.       s = primary();
  4192.       }
  4193.       if (!hasError) {
  4194.      
  4195. s1 = "abs "; return s1+s;
  4196.       }
  4197.      
  4198.       break;
  4199.       }
  4200.     case NOT_T:{if (!hasError) {
  4201.      
  4202.       jj_consume_token(NOT_T);
  4203.       }
  4204.       if (!hasError) {
  4205.      
  4206.       s = primary();
  4207.       }
  4208.       if (!hasError) {
  4209.      
  4210. s1="not ";return s1+s;
  4211.       }
  4212.      
  4213.       break;
  4214.       }
  4215.     default:
  4216.       jj_la1[100] = jj_gen;
  4217.       jj_consume_token(-1);
  4218.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  4219.     }
  4220. assert(false);
  4221. }
  4222.  
  4223.  
  4224. QCString VhdlParser::file_declaration() {QCString s,s1,s2,s3;if (!hasError) {
  4225.    
  4226.     jj_consume_token(FILE_T);
  4227.     }
  4228.     if (!hasError) {
  4229.    
  4230.     s = identifier_list();
  4231.     }
  4232.     if (!hasError) {
  4233.    
  4234.     jj_consume_token(COLON_T);
  4235.     }
  4236.     if (!hasError) {
  4237.    
  4238.     s2 = subtype_indication();
  4239.     }
  4240.     if (!hasError) {
  4241.    
  4242.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4243.     case IS_T:
  4244.     case OPEN_T:{if (!hasError) {
  4245.      
  4246.       s3 = file_open_information();
  4247.       }
  4248.      
  4249.       break;
  4250.       }
  4251.     default:
  4252.       jj_la1[101] = jj_gen;
  4253.       ;
  4254.     }
  4255.     }
  4256.     if (!hasError) {
  4257.    
  4258.     jj_consume_token(SEMI_T);
  4259.     }
  4260.    
  4261. QCString t1=s2+" "+s3;
  4262.    addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,t1.data(),Public);
  4263.    return " file "+s+":"+s2+" "+s3+";";
  4264. assert(false);
  4265. }
  4266.  
  4267.  
  4268. QCString VhdlParser::file_logical_name() {QCString s;if (!hasError) {
  4269.    
  4270.     s = expression();
  4271.     }
  4272.    
  4273. return s;
  4274. assert(false);
  4275. }
  4276.  
  4277.  
  4278. QCString VhdlParser::file_open_information() {QCString s,s1,s2;if (!hasError) {
  4279.    
  4280.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4281.     case OPEN_T:{if (!hasError) {
  4282.      
  4283.       jj_consume_token(OPEN_T);
  4284.       }
  4285.       if (!hasError) {
  4286.      
  4287.       s = expression();
  4288.       }
  4289.      
  4290.       break;
  4291.       }
  4292.     default:
  4293.       jj_la1[102] = jj_gen;
  4294.       ;
  4295.     }
  4296.     }
  4297.     if (!hasError) {
  4298.    
  4299.     jj_consume_token(IS_T);
  4300.     }
  4301.     if (!hasError) {
  4302.    
  4303.     s1 = file_logical_name();
  4304.     }
  4305.    
  4306. s2="open "+s+" is "+s1;  return s2;
  4307. assert(false);
  4308. }
  4309.  
  4310.  
  4311. QCString VhdlParser::file_type_definition() {QCString s,s1;if (!hasError) {
  4312.    
  4313.     jj_consume_token(FILE_T);
  4314.     }
  4315.     if (!hasError) {
  4316.    
  4317.     jj_consume_token(OF_T);
  4318.     }
  4319.     if (!hasError) {
  4320.    
  4321.     s = type_mark();
  4322.     }
  4323.    
  4324. s1=" file of "+s; return s1;
  4325. assert(false);
  4326. }
  4327.  
  4328.  
  4329. QCString VhdlParser::floating_type_definition() {QCString s;if (!hasError) {
  4330.    
  4331.     s = range_constraint();
  4332.     }
  4333.    
  4334. return s;
  4335. assert(false);
  4336. }
  4337.  
  4338.  
  4339. QCString VhdlParser::formal_designator() {QCString s;Token *tok=0;
  4340.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4341.     case SLSL_T:
  4342.     case STRINGLITERAL:
  4343.     case BASIC_IDENTIFIER:
  4344.     case EXTENDED_CHARACTER:{if (!hasError) {
  4345.      
  4346.       s = name();
  4347.       }
  4348.       if (!hasError) {
  4349.      
  4350. return s;
  4351.       }
  4352.      
  4353.       break;
  4354.       }
  4355.     case INTEGER:{if (!hasError) {
  4356.      
  4357.       tok = jj_consume_token(INTEGER);
  4358.       }
  4359.       if (!hasError) {
  4360.      
  4361. return tok->image.c_str();
  4362.       }
  4363.      
  4364.       break;
  4365.       }
  4366.     default:
  4367.       jj_la1[103] = jj_gen;
  4368.       jj_consume_token(-1);
  4369.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  4370.     }
  4371. assert(false);
  4372. }
  4373.  
  4374.  
  4375. QCString VhdlParser::formal_parameter_list() {QCString s;if (!hasError) {
  4376.    
  4377.     s = interface_list();
  4378.     }
  4379.    
  4380. return s;
  4381. assert(false);
  4382. }
  4383.  
  4384.  
  4385. QCString VhdlParser::formal_part() {QCString s,s1;if (!hasError) {
  4386.    
  4387.     s = name();
  4388.     }
  4389.     if (!hasError) {
  4390.    
  4391.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4392.     case LPAREN_T:{if (!hasError) {
  4393.      
  4394.       jj_consume_token(LPAREN_T);
  4395.       }
  4396.       if (!hasError) {
  4397.      
  4398.       formal_designator();
  4399.       }
  4400.       if (!hasError) {
  4401.      
  4402.       jj_consume_token(RPAREN_T);
  4403.       }
  4404.       if (!hasError) {
  4405.      
  4406. s+"("+s1+")";
  4407.       }
  4408.      
  4409.       break;
  4410.       }
  4411.     default:
  4412.       jj_la1[104] = jj_gen;
  4413.       ;
  4414.     }
  4415.     }
  4416.    
  4417. return s;
  4418. assert(false);
  4419. }
  4420.  
  4421.  
  4422. QCString VhdlParser::full_type_declaration() {Entry *tmpEntry;QCString s,s1,s2;if (!hasError) {
  4423.    
  4424.     jj_consume_token(TYPE_T);
  4425.     }
  4426.     if (!hasError) {
  4427.    
  4428.     s = identifier();
  4429.     }
  4430.     if (!hasError) {
  4431.    
  4432.     jj_consume_token(IS_T);
  4433.     }
  4434.     if (!hasError) {
  4435.    
  4436. tmpEntry=current;
  4437.   addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,0,Public);
  4438.     }
  4439.     if (!hasError) {
  4440.    
  4441.     try {if (!hasError) {
  4442.      
  4443.       s2 = type_definition();
  4444.       }
  4445.      
  4446.     } catch ( ...) {
  4447. error_skipto(SEMI_T);
  4448.     }
  4449.     }
  4450.     if (!hasError) {
  4451.    
  4452.     jj_consume_token(SEMI_T);
  4453.     }
  4454.    
  4455. if (s2.contains("#")) {
  4456.         VhdlDocGen::deleteAllChars(s2,'#');
  4457.         tmpEntry->spec=VhdlDocGen::RECORD;
  4458.         tmpEntry->type=s2.data();
  4459.         //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s2.data(),Public);
  4460.       }
  4461.       else if (s2.contains("%")) {
  4462.         VhdlDocGen::deleteAllChars(s2,'%');
  4463.         tmpEntry->spec=VhdlDocGen::UNITS;
  4464.         tmpEntry->type=s2.data();
  4465.         //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,s2.data(),s2.data(),Public);
  4466.       }
  4467.       else {
  4468.         tmpEntry->spec=VhdlDocGen::TYPE;
  4469.         tmpEntry->type=s2.data();
  4470.         //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public);
  4471.       }
  4472.       tmpEntry=0;
  4473.       return "type "+s+" is "+s2+";";
  4474. assert(false);
  4475. }
  4476.  
  4477.  
  4478. QCString VhdlParser::function_call() {QCString s,s1;if (!hasError) {
  4479.    
  4480.     s = name();
  4481.     }
  4482.     if (!hasError) {
  4483.    
  4484.     jj_consume_token(LPAREN_T);
  4485.     }
  4486.     if (!hasError) {
  4487.    
  4488.     s1 = actual_parameter_part();
  4489.     }
  4490.     if (!hasError) {
  4491.    
  4492.     jj_consume_token(RPAREN_T);
  4493.     }
  4494.    
  4495. return s+"("+s1+")";
  4496. assert(false);
  4497. }
  4498.  
  4499.  
  4500. void VhdlParser::generate_statement() {QCString s;if (!hasError) {
  4501.    
  4502.     s = identifier();
  4503.     }
  4504.     if (!hasError) {
  4505.    
  4506.     jj_consume_token(COLON_T);
  4507.     }
  4508.     if (!hasError) {
  4509.    
  4510.     try {if (!hasError) {
  4511.      
  4512.       generate_scheme();
  4513.       }
  4514.       if (!hasError) {
  4515.      
  4516.       jj_consume_token(GENERATE_T);
  4517.       }
  4518.       if (!hasError) {
  4519.      
  4520. pushLabel(genLabels,s);
  4521.       }
  4522.       if (!hasError) {
  4523.      
  4524.       generate_statement_body1();
  4525.       }
  4526.       if (!hasError) {
  4527.      
  4528.       jj_consume_token(END_T);
  4529.       }
  4530.      
  4531.     } catch ( ...) {
  4532. error_skipto(GENERATE_T);
  4533.     }
  4534.     }
  4535.     if (!hasError) {
  4536.    
  4537.     jj_consume_token(GENERATE_T);
  4538.     }
  4539.     if (!hasError) {
  4540.    
  4541.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4542.     case BASIC_IDENTIFIER:
  4543.     case EXTENDED_CHARACTER:{if (!hasError) {
  4544.      
  4545.       identifier();
  4546.       }
  4547.      
  4548.       break;
  4549.       }
  4550.     default:
  4551.       jj_la1[105] = jj_gen;
  4552.       ;
  4553.     }
  4554.     }
  4555.     if (!hasError) {
  4556.    
  4557.     jj_consume_token(SEMI_T);
  4558.     }
  4559.    
  4560. genLabels=popLabel(genLabels);
  4561. }
  4562.  
  4563.  
  4564. void VhdlParser::generate_scheme() {
  4565.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4566.     case FOR_T:{if (!hasError) {
  4567.      
  4568.       jj_consume_token(FOR_T);
  4569.       }
  4570.       if (!hasError) {
  4571.      
  4572.       parameter_specification();
  4573.       }
  4574.      
  4575.       break;
  4576.       }
  4577.     case IF_T:{if (!hasError) {
  4578.      
  4579.       jj_consume_token(IF_T);
  4580.       }
  4581.       if (!hasError) {
  4582.      
  4583.       condition();
  4584.       }
  4585.      
  4586.       break;
  4587.       }
  4588.     default:
  4589.       jj_la1[106] = jj_gen;
  4590.       jj_consume_token(-1);
  4591.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  4592.     }
  4593. }
  4594.  
  4595.  
  4596. void VhdlParser::generic_clause() {QCString s;if (!hasError) {
  4597.    
  4598.     jj_consume_token(GENERIC_T);
  4599.     }
  4600.     if (!hasError) {
  4601.    
  4602.     jj_consume_token(LPAREN_T);
  4603.     }
  4604.     if (!hasError) {
  4605.    
  4606. parse_sec=GEN_SEC;
  4607.     }
  4608.     if (!hasError) {
  4609.    
  4610.     s = generic_list();
  4611.     }
  4612.     if (!hasError) {
  4613.    
  4614.     jj_consume_token(RPAREN_T);
  4615.     }
  4616.     if (!hasError) {
  4617.    
  4618.     jj_consume_token(SEMI_T);
  4619.     }
  4620.    
  4621. parse_sec=0;
  4622. }
  4623.  
  4624.  
  4625. QCString VhdlParser::generic_list() {QCString s;if (!hasError) {
  4626.    
  4627.     s = interface_list();
  4628.     }
  4629.    
  4630. return s;
  4631. assert(false);
  4632. }
  4633.  
  4634.  
  4635. void VhdlParser::generic_map_aspect() {if (!hasError) {
  4636.    
  4637.     jj_consume_token(GENERIC_T);
  4638.     }
  4639.     if (!hasError) {
  4640.    
  4641.     jj_consume_token(MAP_T);
  4642.     }
  4643.     if (!hasError) {
  4644.    
  4645.     jj_consume_token(LPAREN_T);
  4646.     }
  4647.     if (!hasError) {
  4648.    
  4649.     association_list();
  4650.     }
  4651.     if (!hasError) {
  4652.    
  4653.     jj_consume_token(RPAREN_T);
  4654.     }
  4655.    
  4656. }
  4657.  
  4658.  
  4659. QCString VhdlParser::group_constituent() {QCString s;
  4660.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4661.     case SLSL_T:
  4662.     case STRINGLITERAL:
  4663.     case BASIC_IDENTIFIER:
  4664.     case EXTENDED_CHARACTER:{if (!hasError) {
  4665.      
  4666.       s = name();
  4667.       }
  4668.       if (!hasError) {
  4669.      
  4670. return s;
  4671.       }
  4672.      
  4673.       break;
  4674.       }
  4675.     case CHARACTER_LITERAL:{if (!hasError) {
  4676.      
  4677.       s = character_literal();
  4678.       }
  4679.       if (!hasError) {
  4680.      
  4681. return s;
  4682.       }
  4683.      
  4684.       break;
  4685.       }
  4686.     default:
  4687.       jj_la1[107] = jj_gen;
  4688.       jj_consume_token(-1);
  4689.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  4690.     }
  4691. assert(false);
  4692. }
  4693.  
  4694.  
  4695. QCString VhdlParser::group_constituent_list() {QCString s,s1,s2;if (!hasError) {
  4696.     if (!hasError) {
  4697.    
  4698.     s1 = group_constituent();
  4699.     }
  4700.    
  4701.     }
  4702.     if (!hasError) {
  4703.    
  4704.     while (!hasError) {
  4705.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4706.       case COMMA_T:{
  4707.         ;
  4708.         break;
  4709.         }
  4710.       default:
  4711.         jj_la1[108] = jj_gen;
  4712.         goto end_label_21;
  4713.       }if (!hasError) {
  4714.      
  4715.       jj_consume_token(COMMA_T);
  4716.       }
  4717.       if (!hasError) {
  4718.      
  4719.       s = group_constituent();
  4720.       }
  4721.       if (!hasError) {
  4722.      
  4723. s2+=",";s2+=s1;
  4724.       }
  4725.      
  4726.     }
  4727.     end_label_21: ;
  4728.     }
  4729.    
  4730. return s+s2;
  4731. assert(false);
  4732. }
  4733.  
  4734.  
  4735. QCString VhdlParser::group_declaration() {QCString s,s1,s2;if (!hasError) {
  4736.    
  4737.     jj_consume_token(GROUP_T);
  4738.     }
  4739.     if (!hasError) {
  4740.    
  4741.     s = identifier();
  4742.     }
  4743.     if (!hasError) {
  4744.    
  4745.     jj_consume_token(COLON_T);
  4746.     }
  4747.     if (!hasError) {
  4748.    
  4749.     s1 = identifier();
  4750.     }
  4751.     if (!hasError) {
  4752.    
  4753.     jj_consume_token(LPAREN_T);
  4754.     }
  4755.     if (!hasError) {
  4756.    
  4757.     s2 = group_constituent_list();
  4758.     }
  4759.     if (!hasError) {
  4760.    
  4761.     jj_consume_token(RPAREN_T);
  4762.     }
  4763.     if (!hasError) {
  4764.    
  4765.     jj_consume_token(SEMI_T);
  4766.     }
  4767.    
  4768. return "group "+s+":"+s1+"("+s2+");";
  4769. assert(false);
  4770. }
  4771.  
  4772.  
  4773. QCString VhdlParser::group_template_declaration() {QCString s,s1;if (!hasError) {
  4774.    
  4775.     jj_consume_token(GROUP_T);
  4776.     }
  4777.     if (!hasError) {
  4778.    
  4779.     s = identifier();
  4780.     }
  4781.     if (!hasError) {
  4782.    
  4783.     jj_consume_token(IS_T);
  4784.     }
  4785.     if (!hasError) {
  4786.    
  4787.     jj_consume_token(LPAREN_T);
  4788.     }
  4789.     if (!hasError) {
  4790.    
  4791.     s1 = entity_class_entry_list();
  4792.     }
  4793.     if (!hasError) {
  4794.    
  4795.     jj_consume_token(RPAREN_T);
  4796.     }
  4797.     if (!hasError) {
  4798.    
  4799.     jj_consume_token(SEMI_T);
  4800.     }
  4801.    
  4802. return "group "+s+ "is ("+s1+");";
  4803. assert(false);
  4804. }
  4805.  
  4806.  
  4807. void VhdlParser::guarded_signal_specification() {if (!hasError) {
  4808.    
  4809.     signal_list();
  4810.     }
  4811.     if (!hasError) {
  4812.    
  4813.     jj_consume_token(COLON_T);
  4814.     }
  4815.     if (!hasError) {
  4816.    
  4817.     type_mark();
  4818.     }
  4819.    
  4820. }
  4821.  
  4822.  
  4823. QCString VhdlParser::identifier() {Token *tok=0;
  4824.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4825.     case EXTENDED_CHARACTER:{if (!hasError) {
  4826.      
  4827.       tok = jj_consume_token(EXTENDED_CHARACTER);
  4828.       }
  4829.       if (!hasError) {
  4830.      
  4831. return tok->image.c_str();
  4832.       }
  4833.      
  4834.       break;
  4835.       }
  4836.     case BASIC_IDENTIFIER:{if (!hasError) {
  4837.      
  4838.       tok = jj_consume_token(BASIC_IDENTIFIER);
  4839.       }
  4840.       if (!hasError) {
  4841.      
  4842. return tok->image.c_str();
  4843.       }
  4844.      
  4845.       break;
  4846.       }
  4847.     default:
  4848.       jj_la1[109] = jj_gen;
  4849.       jj_consume_token(-1);
  4850.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  4851.     }
  4852. assert(false);
  4853. }
  4854.  
  4855.  
  4856. QCString VhdlParser::identifier_list() {QCString str,str1;if (!hasError) {
  4857.    
  4858.     str = identifier();
  4859.     }
  4860.     if (!hasError) {
  4861.    
  4862.     while (!hasError) {
  4863.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4864.       case COMMA_T:{
  4865.         ;
  4866.         break;
  4867.         }
  4868.       default:
  4869.         jj_la1[110] = jj_gen;
  4870.         goto end_label_22;
  4871.       }if (!hasError) {
  4872.      
  4873.       jj_consume_token(COMMA_T);
  4874.       }
  4875.       if (!hasError) {
  4876.      
  4877.       str1 = identifier();
  4878.       }
  4879.       if (!hasError) {
  4880.      
  4881. str+=",";str+=str1;
  4882.       }
  4883.      
  4884.     }
  4885.     end_label_22: ;
  4886.     }
  4887.    
  4888. return str;
  4889. assert(false);
  4890. }
  4891.  
  4892.  
  4893. void VhdlParser::if_statement() {QCString s,s1;if (!hasError) {
  4894.    
  4895.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4896.     case BASIC_IDENTIFIER:
  4897.     case EXTENDED_CHARACTER:{if (!hasError) {
  4898.      
  4899.       identifier();
  4900.       }
  4901.       if (!hasError) {
  4902.      
  4903.       jj_consume_token(COLON_T);
  4904.       }
  4905.      
  4906.       break;
  4907.       }
  4908.     default:
  4909.       jj_la1[111] = jj_gen;
  4910.       ;
  4911.     }
  4912.     }
  4913.     if (!hasError) {
  4914.    
  4915.     jj_consume_token(IF_T);
  4916.     }
  4917.     if (!hasError) {
  4918.    
  4919.     s = condition();
  4920.     }
  4921.     if (!hasError) {
  4922.    
  4923.     jj_consume_token(THEN_T);
  4924.     }
  4925.     if (!hasError) {
  4926.    
  4927. s.prepend("if ");
  4928.     FlowChart::addFlowChart(FlowChart::IF_NO,0,s);
  4929.     }
  4930.     if (!hasError) {
  4931.    
  4932.     sequence_of_statement();
  4933.     }
  4934.     if (!hasError) {
  4935.    
  4936.     while (!hasError) {
  4937.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4938.       case ELSIF_T:{
  4939.         ;
  4940.         break;
  4941.         }
  4942.       default:
  4943.         jj_la1[112] = jj_gen;
  4944.         goto end_label_23;
  4945.       }if (!hasError) {
  4946.      
  4947.       jj_consume_token(ELSIF_T);
  4948.       }
  4949.       if (!hasError) {
  4950.      
  4951.       s1 = condition();
  4952.       }
  4953.       if (!hasError) {
  4954.      
  4955.       jj_consume_token(THEN_T);
  4956.       }
  4957.       if (!hasError) {
  4958.      
  4959. s1.prepend("elsif ");
  4960.            FlowChart::addFlowChart(FlowChart::ELSIF_NO,0,s1.data());
  4961.       }
  4962.       if (!hasError) {
  4963.      
  4964.       sequence_of_statement();
  4965.       }
  4966.      
  4967.     }
  4968.     end_label_23: ;
  4969.     }
  4970.     if (!hasError) {
  4971.    
  4972.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  4973.     case ELSE_T:{if (!hasError) {
  4974.      
  4975.       jj_consume_token(ELSE_T);
  4976.       }
  4977.       if (!hasError) {
  4978.      
  4979. FlowChart::addFlowChart(FlowChart::ELSE_NO,0,0);
  4980.       }
  4981.       if (!hasError) {
  4982.      
  4983.       sequence_of_statement();
  4984.       }
  4985.      
  4986.       break;
  4987.       }
  4988.     default:
  4989.       jj_la1[113] = jj_gen;
  4990.       ;
  4991.     }
  4992.     }
  4993.     if (!hasError) {
  4994.    
  4995.     jj_consume_token(END_T);
  4996.     }
  4997.     if (!hasError) {
  4998.    
  4999.     jj_consume_token(IF_T);
  5000.     }
  5001.     if (!hasError) {
  5002.    
  5003.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5004.     case BASIC_IDENTIFIER:
  5005.     case EXTENDED_CHARACTER:{if (!hasError) {
  5006.      
  5007.       identifier();
  5008.       }
  5009.      
  5010.       break;
  5011.       }
  5012.     default:
  5013.       jj_la1[114] = jj_gen;
  5014.       ;
  5015.     }
  5016.     }
  5017.     if (!hasError) {
  5018.    
  5019.     jj_consume_token(SEMI_T);
  5020.     }
  5021.    
  5022. FlowChart::moveToPrevLevel();
  5023.           FlowChart::addFlowChart(FlowChart::ENDIF_NO,0,0);
  5024. }
  5025.  
  5026.  
  5027. QCString VhdlParser::incomplete_type_declaration() {QCString s;if (!hasError) {
  5028.    
  5029.     jj_consume_token(TYPE_T);
  5030.     }
  5031.     if (!hasError) {
  5032.    
  5033.     s = identifier();
  5034.     }
  5035.     if (!hasError) {
  5036.    
  5037.     jj_consume_token(SEMI_T);
  5038.     }
  5039.    
  5040. return "type "+s+";";
  5041. assert(false);
  5042. }
  5043.  
  5044.  
  5045. QCString VhdlParser::index_constraint() {QCString s="("; QCString s1,s2;if (!hasError) {
  5046.    
  5047.     jj_consume_token(LPAREN_T);
  5048.     }
  5049.     if (!hasError) {
  5050.    
  5051.     s2 = discrete_range();
  5052.     }
  5053.     if (!hasError) {
  5054.    
  5055. s+=s2;
  5056.     }
  5057.     if (!hasError) {
  5058.    
  5059.     while (!hasError) {
  5060.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5061.       case COMMA_T:{
  5062.         ;
  5063.         break;
  5064.         }
  5065.       default:
  5066.         jj_la1[115] = jj_gen;
  5067.         goto end_label_24;
  5068.       }if (!hasError) {
  5069.      
  5070.       jj_consume_token(COMMA_T);
  5071.       }
  5072.       if (!hasError) {
  5073.      
  5074.       s1 = discrete_range();
  5075.       }
  5076.       if (!hasError) {
  5077.      
  5078. s+=",";s+=s1;
  5079.       }
  5080.      
  5081.     }
  5082.     end_label_24: ;
  5083.     }
  5084.     if (!hasError) {
  5085.    
  5086.     jj_consume_token(RPAREN_T);
  5087.     }
  5088.    
  5089. return s+")";
  5090. assert(false);
  5091. }
  5092.  
  5093.  
  5094. QCString VhdlParser::index_specification() {QCString s;
  5095.     if (jj_2_37(2147483647)) {if (!hasError) {
  5096.      
  5097.       s = discrete_range();
  5098.       }
  5099.       if (!hasError) {
  5100.      
  5101. return s;
  5102.       }
  5103.      
  5104.     } else {
  5105.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5106.       case ABS_T:
  5107.       case NEW_T:
  5108.       case NOT_T:
  5109.       case NULL_T:
  5110.       case LPAREN_T:
  5111.       case PLUS_T:
  5112.       case MINUS_T:
  5113.       case SLSL_T:
  5114.       case INTEGER:
  5115.       case STRINGLITERAL:
  5116.       case BASIC_IDENTIFIER:
  5117.       case EXTENDED_CHARACTER:
  5118.       case CHARACTER_LITERAL:
  5119.       case DECIMAL_LITERAL:
  5120.       case BASED_LITERAL:
  5121.       case BIT_STRING_LITERAL:{if (!hasError) {
  5122.        
  5123.         s = expression();
  5124.         }
  5125.         if (!hasError) {
  5126.        
  5127. return s;
  5128.         }
  5129.        
  5130.         break;
  5131.         }
  5132.       default:
  5133.         jj_la1[116] = jj_gen;
  5134.         jj_consume_token(-1);
  5135.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  5136.       }
  5137.     }
  5138. assert(false);
  5139. }
  5140.  
  5141.  
  5142. QCString VhdlParser::index_subtype_definition() {QCString s;if (!hasError) {
  5143.    
  5144.     s = type_mark();
  5145.     }
  5146.     if (!hasError) {
  5147.    
  5148.     jj_consume_token(RANGE_T);
  5149.     }
  5150.     if (!hasError) {
  5151.    
  5152.     jj_consume_token(BOX_T);
  5153.     }
  5154.    
  5155. return s+" range <> ";
  5156. assert(false);
  5157. }
  5158.  
  5159.  
  5160. QCString VhdlParser::instantiation_unit() {QCString s,s1,s2;Token *tok;
  5161.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5162.     case COMPONENT_T:
  5163.     case BASIC_IDENTIFIER:
  5164.     case EXTENDED_CHARACTER:{if (!hasError) {
  5165.      
  5166.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5167.       case COMPONENT_T:{if (!hasError) {
  5168.        
  5169.         jj_consume_token(COMPONENT_T);
  5170.         }
  5171.        
  5172.         break;
  5173.         }
  5174.       default:
  5175.         jj_la1[117] = jj_gen;
  5176.         ;
  5177.       }
  5178.       }
  5179.       if (!hasError) {
  5180.      
  5181.       s = identifier();
  5182.       }
  5183.       if (!hasError) {
  5184.      
  5185. s1="component "; return s;
  5186.       }
  5187.      
  5188.       break;
  5189.       }
  5190.     case ENTITY_T:{if (!hasError) {
  5191.      
  5192.       jj_consume_token(ENTITY_T);
  5193.       }
  5194.       if (!hasError) {
  5195.      
  5196.       if (jj_2_38(2)) {if (!hasError) {
  5197.        
  5198.         jj_consume_token(BASIC_IDENTIFIER);
  5199.         }
  5200.         if (!hasError) {
  5201.        
  5202.         jj_consume_token(DOT_T);
  5203.         }
  5204.        
  5205.       } else {
  5206.         ;
  5207.       }
  5208.       }
  5209.       if (!hasError) {
  5210.      
  5211.       s2 = name();
  5212.       }
  5213.       if (!hasError) {
  5214.      
  5215. s="entity|"+s2;
  5216.       }
  5217.       if (!hasError) {
  5218.      
  5219.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5220.       case LPAREN_T:{if (!hasError) {
  5221.        
  5222.         jj_consume_token(LPAREN_T);
  5223.         }
  5224.         if (!hasError) {
  5225.        
  5226.         s1 = identifier();
  5227.         }
  5228.         if (!hasError) {
  5229.        
  5230.         jj_consume_token(RPAREN_T);
  5231.         }
  5232.         if (!hasError) {
  5233.        
  5234. s+="(";s+=s1;s+=")" ;
  5235.         }
  5236.        
  5237.         break;
  5238.         }
  5239.       default:
  5240.         jj_la1[118] = jj_gen;
  5241.         ;
  5242.       }
  5243.       }
  5244.       if (!hasError) {
  5245.      
  5246. return s;
  5247.       }
  5248.      
  5249.       break;
  5250.       }
  5251.     case CONFIGURATION_T:{if (!hasError) {
  5252.      
  5253.       jj_consume_token(CONFIGURATION_T);
  5254.       }
  5255.       if (!hasError) {
  5256.      
  5257.       s = name();
  5258.       }
  5259.       if (!hasError) {
  5260.      
  5261. s1="configuration ";return s;
  5262.       }
  5263.      
  5264.       break;
  5265.       }
  5266.     default:
  5267.       jj_la1[119] = jj_gen;
  5268.       jj_consume_token(-1);
  5269.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  5270.     }
  5271. assert(false);
  5272. }
  5273.  
  5274.  
  5275. QCString VhdlParser::instantiation_list() {QCString s;Token *tok=0;
  5276.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5277.     case BASIC_IDENTIFIER:
  5278.     case EXTENDED_CHARACTER:{if (!hasError) {
  5279.      
  5280.       s = identifier_list();
  5281.       }
  5282.       if (!hasError) {
  5283.      
  5284. return s;
  5285.       }
  5286.      
  5287.       break;
  5288.       }
  5289.     case OTHER_T:{if (!hasError) {
  5290.      
  5291.       tok = jj_consume_token(OTHER_T);
  5292.       }
  5293.       if (!hasError) {
  5294.      
  5295. return tok->image.c_str();
  5296.       }
  5297.      
  5298.       break;
  5299.       }
  5300.     case ALL_T:{if (!hasError) {
  5301.      
  5302.       tok = jj_consume_token(ALL_T);
  5303.       }
  5304.       if (!hasError) {
  5305.      
  5306. return tok->image.c_str();
  5307.       }
  5308.      
  5309.       break;
  5310.       }
  5311.     default:
  5312.       jj_la1[120] = jj_gen;
  5313.       jj_consume_token(-1);
  5314.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  5315.     }
  5316. assert(false);
  5317. }
  5318.  
  5319.  
  5320. QCString VhdlParser::integer() {Token *t;if (!hasError) {
  5321.    
  5322.     t = jj_consume_token(INTEGER);
  5323.     }
  5324.    
  5325. return t->image.c_str();
  5326. assert(false);
  5327. }
  5328.  
  5329.  
  5330. QCString VhdlParser::integer_type_definition() {QCString s;if (!hasError) {
  5331.    
  5332.     s = range_constraint();
  5333.     }
  5334.    
  5335. return s;
  5336. assert(false);
  5337. }
  5338.  
  5339.  
  5340. QCString VhdlParser::interface_declaration() {QCString s,s1;
  5341.     if (jj_2_39(5)) {if (!hasError) {
  5342.      
  5343.       s = interface_subprogram_declaration();
  5344.       }
  5345.       if (!hasError) {
  5346.      
  5347. return s;
  5348.       }
  5349.      
  5350.     } else {
  5351.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5352.       case PACKAGE_T:{if (!hasError) {
  5353.        
  5354.         interface_package_declaration();
  5355.         }
  5356.         if (!hasError) {
  5357.        
  5358. return s;
  5359.         }
  5360.        
  5361.         break;
  5362.         }
  5363.       default:
  5364.         jj_la1[121] = jj_gen;
  5365.         if (jj_2_40(5)) {if (!hasError) {
  5366.          
  5367.           s = interface_variable_declaration();
  5368.           }
  5369.           if (!hasError) {
  5370.          
  5371. return s;
  5372.           }
  5373.          
  5374.         } else if (jj_2_41(5)) {if (!hasError) {
  5375.          
  5376.           interface_file_declaration();
  5377.           }
  5378.           if (!hasError) {
  5379.          
  5380. return s;
  5381.           }
  5382.          
  5383.         } else if (jj_2_42(2147483647)) {if (!hasError) {
  5384.          
  5385.           subprogram_declaration();
  5386.           }
  5387.           if (!hasError) {
  5388.          
  5389. return s;
  5390.           }
  5391.          
  5392.         } else {
  5393.           switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5394.           case CONSTANT_T:
  5395.           case FILE_T:
  5396.           case SIGNAL_T:
  5397.           case SHARED_T:
  5398.           case TYPE_T:
  5399.           case VARIABLE_T:{if (!hasError) {
  5400.            
  5401.             s = object_class();
  5402.             }
  5403.             if (!hasError) {
  5404.            
  5405.             s1 = identifier();
  5406.             }
  5407.             if (!hasError) {
  5408.            
  5409. if (parse_sec==GEN_SEC)
  5410.  
  5411.     addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,currP,s1.data(),0,Public);
  5412.     return s;
  5413.             }
  5414.            
  5415.             break;
  5416.             }
  5417.           default:
  5418.             jj_la1[122] = jj_gen;
  5419.             jj_consume_token(-1);
  5420.             errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  5421.           }
  5422.         }
  5423.       }
  5424.     }
  5425. assert(false);
  5426. }
  5427.  
  5428.  
  5429. QCString VhdlParser::interface_element() {QCString s;if (!hasError) {
  5430.    
  5431.     s = interface_declaration();
  5432.     }
  5433.    
  5434. return s;
  5435. assert(false);
  5436. }
  5437.  
  5438.  
  5439. QCString VhdlParser::interface_file_declaration() {QCString s,s1;if (!hasError) {
  5440.    
  5441.     jj_consume_token(FILE_T);
  5442.     }
  5443.     if (!hasError) {
  5444.    
  5445.     s = identifier_list();
  5446.     }
  5447.     if (!hasError) {
  5448.    
  5449.     jj_consume_token(COLON_T);
  5450.     }
  5451.     if (!hasError) {
  5452.    
  5453.     s1 = subtype_indication();
  5454.     }
  5455.    
  5456. addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s1.data(),Public);
  5457.    return " file "+s+":"+s1;
  5458. assert(false);
  5459. }
  5460.  
  5461.  
  5462. QCString VhdlParser::interface_list() {QCString s,s1,s2;if (!hasError) {
  5463.    
  5464.     s = interface_element();
  5465.     }
  5466.     if (!hasError) {
  5467.    
  5468.     while (!hasError) {
  5469.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5470.       case SEMI_T:{
  5471.         ;
  5472.         break;
  5473.         }
  5474.       default:
  5475.         jj_la1[123] = jj_gen;
  5476.         goto end_label_25;
  5477.       }if (!hasError) {
  5478.      
  5479.       jj_consume_token(SEMI_T);
  5480.       }
  5481.       if (!hasError) {
  5482.      
  5483.       s1 = interface_element();
  5484.       }
  5485.       if (!hasError) {
  5486.      
  5487. s2+=";";s2+=s1;
  5488.       }
  5489.      
  5490.     }
  5491.     end_label_25: ;
  5492.     }
  5493.    
  5494. return s+s2;
  5495. assert(false);
  5496. }
  5497.  
  5498.  
  5499. QCString VhdlParser::interface_variable_declaration() {Token *tok=0;Token *tok1=0;Token *tok2=0;QCString s,s1,s2,s3,s4,s5;if (!hasError) {
  5500.    
  5501.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5502.     case CONSTANT_T:
  5503.     case SIGNAL_T:
  5504.     case SHARED_T:
  5505.     case VARIABLE_T:{if (!hasError) {
  5506.      
  5507.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5508.       case VARIABLE_T:{if (!hasError) {
  5509.        
  5510.         tok = jj_consume_token(VARIABLE_T);
  5511.         }
  5512.        
  5513.         break;
  5514.         }
  5515.       case SIGNAL_T:{if (!hasError) {
  5516.        
  5517.         tok = jj_consume_token(SIGNAL_T);
  5518.         }
  5519.        
  5520.         break;
  5521.         }
  5522.       case CONSTANT_T:{if (!hasError) {
  5523.        
  5524.         tok = jj_consume_token(CONSTANT_T);
  5525.         }
  5526.        
  5527.         break;
  5528.         }
  5529.       case SHARED_T:{if (!hasError) {
  5530.        
  5531.         tok = jj_consume_token(SHARED_T);
  5532.         }
  5533.        
  5534.         break;
  5535.         }
  5536.       default:
  5537.         jj_la1[124] = jj_gen;
  5538.         jj_consume_token(-1);
  5539.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  5540.       }
  5541.       }
  5542.      
  5543.       break;
  5544.       }
  5545.     default:
  5546.       jj_la1[125] = jj_gen;
  5547.       ;
  5548.     }
  5549.     }
  5550.     if (!hasError) {
  5551.    
  5552.     s = identifier_list();
  5553.     }
  5554.     if (!hasError) {
  5555.    
  5556.     jj_consume_token(COLON_T);
  5557.     }
  5558.     if (!hasError) {
  5559.    
  5560.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5561.     case BUFFER_T:
  5562.     case IN_T:
  5563.     case INOUT_T:
  5564.     case LINKAGE_T:
  5565.     case OUT_T:{if (!hasError) {
  5566.      
  5567.       s1 = mode();
  5568.       }
  5569.      
  5570.       break;
  5571.       }
  5572.     default:
  5573.       jj_la1[126] = jj_gen;
  5574.       ;
  5575.     }
  5576.     }
  5577.     if (!hasError) {
  5578.    
  5579.     s2 = subtype_indication();
  5580.     }
  5581.     if (!hasError) {
  5582.    
  5583.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5584.     case BUS_T:{if (!hasError) {
  5585.      
  5586.       tok1 = jj_consume_token(BUS_T);
  5587.       }
  5588.      
  5589.       break;
  5590.       }
  5591.     default:
  5592.       jj_la1[127] = jj_gen;
  5593.       ;
  5594.     }
  5595.     }
  5596.     if (!hasError) {
  5597.    
  5598.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5599.     case VARASSIGN_T:{if (!hasError) {
  5600.      
  5601.       tok2 = jj_consume_token(VARASSIGN_T);
  5602.       }
  5603.       if (!hasError) {
  5604.      
  5605.       s4 = expression();
  5606.       }
  5607.      
  5608.       break;
  5609.       }
  5610.     default:
  5611.       jj_la1[128] = jj_gen;
  5612.       ;
  5613.     }
  5614.     }
  5615.    
  5616. if(tok)
  5617.                     s5=tok->image.c_str();
  5618.  
  5619.                     if(tok1)
  5620.                      s3=tok1->image.data();
  5621.  
  5622.                     if(tok2)
  5623.                      s3+=":=";
  5624.  
  5625.                     QCString it=s+":"+s1+" "+s2+" "+s3+" "+s4;
  5626.                     if (currP!=VhdlDocGen::COMPONENT)
  5627.                     {
  5628.                       if (currP==VhdlDocGen::FUNCTION || currP==VhdlDocGen::PROCEDURE)
  5629.                       {
  5630.                         addProto(s5.data(),s.data(),s1.data(),s2.data(),s3.data(),s4.data());
  5631.                       }
  5632.                       else
  5633.                       {
  5634.                         QCString i=s2+s3+s4;
  5635.                         if (currP==VhdlDocGen::GENERIC && param_sec==0)
  5636.                           addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,currP,i.data(),s1.data(),Public);
  5637.                         else if(parse_sec != GEN_SEC)
  5638.                           addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,currP,i.data(),s1.data(),Public);
  5639.                       }
  5640.                       //   fprintf(stderr,"\n\n <<port  %s  >>\n",$$.data());
  5641.                     } // if component
  5642.               return it;
  5643. assert(false);
  5644. }
  5645.  
  5646.  
  5647. QCString VhdlParser::iteration_scheme() {QCString s;
  5648.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5649.     case WHILE_T:{if (!hasError) {
  5650.      
  5651.       jj_consume_token(WHILE_T);
  5652.       }
  5653.       if (!hasError) {
  5654.      
  5655.       s = condition();
  5656.       }
  5657.       if (!hasError) {
  5658.      
  5659. s.prepend("while ");
  5660.    FlowChart::addFlowChart(FlowChart::WHILE_NO,0,s.data(),lab.data());
  5661.    lab="";
  5662.   return s;
  5663.       }
  5664.      
  5665.       break;
  5666.       }
  5667.     case FOR_T:{if (!hasError) {
  5668.      
  5669.       jj_consume_token(FOR_T);
  5670.       }
  5671.       if (!hasError) {
  5672.      
  5673.       s = parameter_specification();
  5674.       }
  5675.       if (!hasError) {
  5676.      
  5677. QCString q=lab+" for "+s;
  5678.     FlowChart::addFlowChart(FlowChart::FOR_NO,0,q.data(),lab.data());
  5679.     lab="";
  5680.     return q;
  5681.       }
  5682.      
  5683.       break;
  5684.       }
  5685.     default:
  5686.       jj_la1[129] = jj_gen;
  5687.       jj_consume_token(-1);
  5688.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  5689.     }
  5690. assert(false);
  5691. }
  5692.  
  5693.  
  5694. QCString VhdlParser::label() {QCString s;if (!hasError) {
  5695.    
  5696.     s = identifier();
  5697.     }
  5698.    
  5699. return s;
  5700. assert(false);
  5701. }
  5702.  
  5703.  
  5704. QCString VhdlParser::library_clause() {QCString s;if (!hasError) {
  5705.     if (!hasError) {
  5706.    
  5707.     jj_consume_token(LIBRARY_T);
  5708.     }
  5709.     if (!hasError) {
  5710.    
  5711.     s = identifier_list();
  5712.     }
  5713.     if (!hasError) {
  5714.    
  5715.     jj_consume_token(SEMI_T);
  5716.     }
  5717.    
  5718.     }
  5719.    
  5720. if ( parse_sec==0 && Config_getBool(SHOW_INCLUDE_FILES) )
  5721.                    {
  5722.                            addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,s.data(),"_library_",Public);
  5723.                    }
  5724.                    QCString s1="library "+s;
  5725.                    return s1;
  5726. assert(false);
  5727. }
  5728.  
  5729.  
  5730. QCString VhdlParser::library_unit() {QCString s;
  5731.     if (jj_2_43(2)) {if (!hasError) {
  5732.      
  5733.       primary_unit();
  5734.       }
  5735.       if (!hasError) {
  5736.      
  5737. return s;
  5738.       }
  5739.      
  5740.     } else {
  5741.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5742.       case ARCHITECTURE_T:
  5743.       case PACKAGE_T:{if (!hasError) {
  5744.        
  5745.         secondary_unit();
  5746.         }
  5747.         if (!hasError) {
  5748.        
  5749. return s;
  5750.         }
  5751.        
  5752.         break;
  5753.         }
  5754.       case CONTEXT_T:{if (!hasError) {
  5755.        
  5756.         context_declaration();
  5757.         }
  5758.        
  5759.         break;
  5760.         }
  5761.       default:
  5762.         jj_la1[130] = jj_gen;
  5763.         jj_consume_token(-1);
  5764.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  5765.       }
  5766.     }
  5767. assert(false);
  5768. }
  5769.  
  5770.  
  5771. QCString VhdlParser::literal() {QCString s;
  5772.     if (jj_2_44(2147483647)) {if (!hasError) {
  5773.      
  5774.       s = bit_string_literal();
  5775.       }
  5776.       if (!hasError) {
  5777.      
  5778. return s;
  5779.       }
  5780.      
  5781.     } else if (jj_2_45(2147483647)) {if (!hasError) {
  5782.      
  5783.       s = numeric_literal();
  5784.       }
  5785.       if (!hasError) {
  5786.      
  5787. return s;
  5788.       }
  5789.      
  5790.     } else if (jj_2_46(2147483647)) {if (!hasError) {
  5791.      
  5792.       s = enumeration_literal();
  5793.       }
  5794.       if (!hasError) {
  5795.      
  5796. return s;
  5797.       }
  5798.      
  5799.     } else {
  5800.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5801.       case STRINGLITERAL:{if (!hasError) {
  5802.        
  5803.         s = string_literal();
  5804.         }
  5805.         if (!hasError) {
  5806.        
  5807. return s;
  5808.         }
  5809.        
  5810.         break;
  5811.         }
  5812.       case NULL_T:{if (!hasError) {
  5813.        
  5814.         jj_consume_token(NULL_T);
  5815.         }
  5816.         if (!hasError) {
  5817.        
  5818. return "null";
  5819.         }
  5820.        
  5821.         break;
  5822.         }
  5823.       default:
  5824.         jj_la1[131] = jj_gen;
  5825.         jj_consume_token(-1);
  5826.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  5827.       }
  5828.     }
  5829. assert(false);
  5830. }
  5831.  
  5832.  
  5833. QCString VhdlParser::logical_operator() {QCString s;if (!hasError) {
  5834.    
  5835.     s = logop();
  5836.     }
  5837.    
  5838. return s;
  5839. assert(false);
  5840. }
  5841.  
  5842.  
  5843. QCString VhdlParser::loop_statement() {QCString s,s1,s2,s3;if (!hasError) {
  5844.    
  5845.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5846.     case BASIC_IDENTIFIER:
  5847.     case EXTENDED_CHARACTER:{if (!hasError) {
  5848.      
  5849.       s = identifier();
  5850.       }
  5851.       if (!hasError) {
  5852.      
  5853.       jj_consume_token(COLON_T);
  5854.       }
  5855.       if (!hasError) {
  5856.      
  5857. s+=":";
  5858.       }
  5859.      
  5860.       break;
  5861.       }
  5862.     default:
  5863.       jj_la1[132] = jj_gen;
  5864.       ;
  5865.     }
  5866.     }
  5867.     if (!hasError) {
  5868.    
  5869.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5870.     case FOR_T:
  5871.     case WHILE_T:{if (!hasError) {
  5872.      
  5873.       s1 = iteration_scheme();
  5874.       }
  5875.      
  5876.       break;
  5877.       }
  5878.     default:
  5879.       jj_la1[133] = jj_gen;
  5880.       ;
  5881.     }
  5882.     }
  5883.     if (!hasError) {
  5884.    
  5885. if(s1.isEmpty())
  5886.         FlowChart::addFlowChart(FlowChart::LOOP_NO,0,"infinite");
  5887.     }
  5888.     if (!hasError) {
  5889.    
  5890.     jj_consume_token(LOOP_T);
  5891.     }
  5892.     if (!hasError) {
  5893.    
  5894.     s2 = sequence_of_statement();
  5895.     }
  5896.     if (!hasError) {
  5897.    
  5898.     jj_consume_token(END_T);
  5899.     }
  5900.     if (!hasError) {
  5901.    
  5902.     jj_consume_token(LOOP_T);
  5903.     }
  5904.     if (!hasError) {
  5905.    
  5906.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5907.     case BASIC_IDENTIFIER:
  5908.     case EXTENDED_CHARACTER:{if (!hasError) {
  5909.      
  5910.       s3 = identifier();
  5911.       }
  5912.      
  5913.       break;
  5914.       }
  5915.     default:
  5916.       jj_la1[134] = jj_gen;
  5917.       ;
  5918.     }
  5919.     }
  5920.     if (!hasError) {
  5921.    
  5922.     jj_consume_token(SEMI_T);
  5923.     }
  5924.    
  5925. QCString q = s+" loop "+s2+" end loop" +s3;
  5926.          QCString endLoop="end loop" + s3;
  5927.          FlowChart::moveToPrevLevel();
  5928.          FlowChart::addFlowChart(FlowChart::END_LOOP,endLoop.data(),0);
  5929.         return q;
  5930. assert(false);
  5931. }
  5932.  
  5933.  
  5934. QCString VhdlParser::miscellaneous_operator() {Token *t=0;
  5935.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5936.     case DOUBLEMULT_T:{if (!hasError) {
  5937.      
  5938.       jj_consume_token(DOUBLEMULT_T);
  5939.       }
  5940.       if (!hasError) {
  5941.      
  5942. return "**";
  5943.       }
  5944.      
  5945.       break;
  5946.       }
  5947.     case ABS_T:{if (!hasError) {
  5948.      
  5949.       jj_consume_token(ABS_T);
  5950.       }
  5951.       if (!hasError) {
  5952.      
  5953. return "abs";
  5954.       }
  5955.      
  5956.       break;
  5957.       }
  5958.     case NOT_T:{if (!hasError) {
  5959.      
  5960.       jj_consume_token(NOT_T);
  5961.       }
  5962.       if (!hasError) {
  5963.      
  5964. return "not";
  5965.       }
  5966.      
  5967.       break;
  5968.       }
  5969.     default:
  5970.       jj_la1[135] = jj_gen;
  5971.       jj_consume_token(-1);
  5972.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  5973.     }
  5974. assert(false);
  5975. }
  5976.  
  5977.  
  5978. QCString VhdlParser::mode() {Token *tok=0;
  5979.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  5980.     case IN_T:{if (!hasError) {
  5981.      
  5982.       tok = jj_consume_token(IN_T);
  5983.       }
  5984.       if (!hasError) {
  5985.      
  5986. return "in";
  5987.       }
  5988.      
  5989.       break;
  5990.       }
  5991.     case OUT_T:{if (!hasError) {
  5992.      
  5993.       tok = jj_consume_token(OUT_T);
  5994.       }
  5995.       if (!hasError) {
  5996.      
  5997. return "out";
  5998.       }
  5999.      
  6000.       break;
  6001.       }
  6002.     case INOUT_T:{if (!hasError) {
  6003.      
  6004.       tok = jj_consume_token(INOUT_T);
  6005.       }
  6006.       if (!hasError) {
  6007.      
  6008. return "inout";
  6009.       }
  6010.      
  6011.       break;
  6012.       }
  6013.     case BUFFER_T:{if (!hasError) {
  6014.      
  6015.       tok = jj_consume_token(BUFFER_T);
  6016.       }
  6017.       if (!hasError) {
  6018.      
  6019. return "buffer";
  6020.       }
  6021.      
  6022.       break;
  6023.       }
  6024.     case LINKAGE_T:{if (!hasError) {
  6025.      
  6026.       tok = jj_consume_token(LINKAGE_T);
  6027.       }
  6028.       if (!hasError) {
  6029.      
  6030. return "linkage";
  6031.       }
  6032.      
  6033.       break;
  6034.       }
  6035.     default:
  6036.       jj_la1[136] = jj_gen;
  6037.       jj_consume_token(-1);
  6038.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  6039.     }
  6040. assert(false);
  6041. }
  6042.  
  6043.  
  6044. QCString VhdlParser::multiplying_operation() {Token *tok=0;
  6045.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6046.     case MULT_T:{if (!hasError) {
  6047.      
  6048.       tok = jj_consume_token(MULT_T);
  6049.       }
  6050.       if (!hasError) {
  6051.      
  6052. return tok->image.c_str();
  6053.       }
  6054.      
  6055.       break;
  6056.       }
  6057.     case SLASH_T:{if (!hasError) {
  6058.      
  6059.       tok = jj_consume_token(SLASH_T);
  6060.       }
  6061.       if (!hasError) {
  6062.      
  6063. return tok->image.c_str();
  6064.       }
  6065.      
  6066.       break;
  6067.       }
  6068.     case MOD_T:{if (!hasError) {
  6069.      
  6070.       tok = jj_consume_token(MOD_T);
  6071.       }
  6072.       if (!hasError) {
  6073.      
  6074. return tok->image.c_str();
  6075.       }
  6076.      
  6077.       break;
  6078.       }
  6079.     case REM_T:{if (!hasError) {
  6080.      
  6081.       tok = jj_consume_token(REM_T);
  6082.       }
  6083.       if (!hasError) {
  6084.      
  6085. return tok->image.c_str();
  6086.       }
  6087.      
  6088.       break;
  6089.       }
  6090.     default:
  6091.       jj_la1[137] = jj_gen;
  6092.       jj_consume_token(-1);
  6093.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  6094.     }
  6095. assert(false);
  6096. }
  6097.  
  6098.  
  6099. QCString VhdlParser::name() {QCString s,s1;if (!hasError) {
  6100.    
  6101.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6102.     case STRINGLITERAL:{if (!hasError) {
  6103.      
  6104.       s = operator_symbol();
  6105.       }
  6106.      
  6107.       break;
  6108.       }
  6109.     case BASIC_IDENTIFIER:
  6110.     case EXTENDED_CHARACTER:{if (!hasError) {
  6111.      
  6112.       s = identifier();
  6113.       }
  6114.      
  6115.       break;
  6116.       }
  6117.     case SLSL_T:{if (!hasError) {
  6118.      
  6119.       s = external_name();
  6120.       }
  6121.      
  6122.       break;
  6123.       }
  6124.     default:
  6125.       jj_la1[138] = jj_gen;
  6126.       jj_consume_token(-1);
  6127.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  6128.     }
  6129.     }
  6130.     if (!hasError) {
  6131.    
  6132.     if (jj_2_47(2147483647)) {if (!hasError) {
  6133.      
  6134.       s1 = name_ext1();
  6135.       }
  6136.       if (!hasError) {
  6137.      
  6138. s+=s1;
  6139.       }
  6140.      
  6141.     } else {
  6142.       ;
  6143.     }
  6144.     }
  6145.    
  6146. return s;
  6147. assert(false);
  6148. }
  6149.  
  6150.  
  6151. QCString VhdlParser::name_ext1() {QCString s,s1,s2;if (!hasError) {
  6152.    
  6153.     s = name_ext();
  6154.     }
  6155.     if (!hasError) {
  6156.    
  6157.     while (!hasError) {
  6158.       if (jj_2_48(2147483647)) {
  6159.         ;
  6160.       } else {
  6161.         goto end_label_26;
  6162.       }if (!hasError) {
  6163.      
  6164.       s1 = name_ext();
  6165.       }
  6166.       if (!hasError) {
  6167.      
  6168. s+=s1;
  6169.       }
  6170.      
  6171.     }
  6172.     end_label_26: ;
  6173.     }
  6174.    
  6175. return s;
  6176. assert(false);
  6177. }
  6178.  
  6179.  
  6180. QCString VhdlParser::name_ext() {QCString s,s1,s2;if (!hasError) {
  6181.    
  6182.     if (jj_2_49(2147483647)) {if (!hasError) {
  6183.      
  6184.       jj_consume_token(DOT_T);
  6185.       }
  6186.       if (!hasError) {
  6187.      
  6188.       s1 = suffix();
  6189.       }
  6190.       if (!hasError) {
  6191.      
  6192. s+=".";s+=s1;
  6193.       }
  6194.      
  6195.     } else if (jj_2_50(2147483647)) {if (!hasError) {
  6196.      
  6197.       s1 = test_att_name();
  6198.       }
  6199.       if (!hasError) {
  6200.      
  6201. s+=s1;
  6202.       }
  6203.      
  6204.     } else if (jj_2_51(2147483647)) {if (!hasError) {
  6205.      
  6206.       jj_consume_token(LPAREN_T);
  6207.       }
  6208.       if (!hasError) {
  6209.      
  6210.       s1 = discrete_range();
  6211.       }
  6212.       if (!hasError) {
  6213.      
  6214.       jj_consume_token(RPAREN_T);
  6215.       }
  6216.       if (!hasError) {
  6217.      
  6218. s+="(";s+=s1;s+=")";
  6219.       }
  6220.      
  6221.     } else if (jj_2_52(2147483647)) {if (!hasError) {
  6222.      
  6223.       jj_consume_token(LPAREN_T);
  6224.       }
  6225.       if (!hasError) {
  6226.      
  6227.       s1 = expression();
  6228.       }
  6229.       if (!hasError) {
  6230.      
  6231. s+="(";s+=s1;
  6232.       }
  6233.       if (!hasError) {
  6234.      
  6235.       while (!hasError) {
  6236.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6237.         case COMMA_T:{
  6238.           ;
  6239.           break;
  6240.           }
  6241.         default:
  6242.           jj_la1[139] = jj_gen;
  6243.           goto end_label_27;
  6244.         }if (!hasError) {
  6245.        
  6246.         jj_consume_token(COMMA_T);
  6247.         }
  6248.         if (!hasError) {
  6249.        
  6250.         s1 = expression();
  6251.         }
  6252.         if (!hasError) {
  6253.        
  6254. s+=",";s+=s1;
  6255.         }
  6256.        
  6257.       }
  6258.       end_label_27: ;
  6259.       }
  6260.       if (!hasError) {
  6261.      
  6262.       jj_consume_token(RPAREN_T);
  6263.       }
  6264.       if (!hasError) {
  6265.      
  6266. s+=")";
  6267.       }
  6268.      
  6269.     } else {
  6270.       jj_consume_token(-1);
  6271.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  6272.     }
  6273.     }
  6274.    
  6275. return s;
  6276. assert(false);
  6277. }
  6278.  
  6279.  
  6280. QCString VhdlParser::test_att_name() {QCString s,s1;if (!hasError) {
  6281.    
  6282.     if (jj_2_53(2147483647)) {if (!hasError) {
  6283.      
  6284.       s1 = signature();
  6285.       }
  6286.       if (!hasError) {
  6287.      
  6288. s=s1;
  6289.       }
  6290.      
  6291.     } else {
  6292.       ;
  6293.     }
  6294.     }
  6295.     if (!hasError) {
  6296.    
  6297.     jj_consume_token(APOSTROPHE_T);
  6298.     }
  6299.     if (!hasError) {
  6300.    
  6301.     s1 = attribute_designator();
  6302.     }
  6303.     if (!hasError) {
  6304.    
  6305. s+="'";s+=s1;
  6306.     }
  6307.     if (!hasError) {
  6308.    
  6309.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6310.     case LPAREN_T:{if (!hasError) {
  6311.      
  6312.       jj_consume_token(LPAREN_T);
  6313.       }
  6314.       if (!hasError) {
  6315.      
  6316.       s1 = expression();
  6317.       }
  6318.       if (!hasError) {
  6319.      
  6320.       jj_consume_token(RPAREN_T);
  6321.       }
  6322.       if (!hasError) {
  6323.      
  6324. s+="(";s+=s1;s+=")";
  6325.       }
  6326.      
  6327.       break;
  6328.       }
  6329.     default:
  6330.       jj_la1[140] = jj_gen;
  6331.       ;
  6332.     }
  6333.     }
  6334.    
  6335. return s;
  6336. assert(false);
  6337. }
  6338.  
  6339.  
  6340. QCString VhdlParser::indexed_name() {QCString s,s1,s2;if (!hasError) {
  6341.    
  6342.     s2 = identifier();
  6343.     }
  6344.     if (!hasError) {
  6345.    
  6346.     jj_consume_token(LPAREN_T);
  6347.     }
  6348.     if (!hasError) {
  6349.    
  6350.     s1 = expression();
  6351.     }
  6352.     if (!hasError) {
  6353.    
  6354. s=s2+"("+s1;
  6355.     }
  6356.     if (!hasError) {
  6357.    
  6358.     while (!hasError) {
  6359.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6360.       case COMMA_T:{
  6361.         ;
  6362.         break;
  6363.         }
  6364.       default:
  6365.         jj_la1[141] = jj_gen;
  6366.         goto end_label_28;
  6367.       }if (!hasError) {
  6368.      
  6369.       jj_consume_token(COMMA_T);
  6370.       }
  6371.       if (!hasError) {
  6372.      
  6373.       s1 = expression();
  6374.       }
  6375.       if (!hasError) {
  6376.      
  6377. s+=",";s+=s1;
  6378.       }
  6379.      
  6380.     }
  6381.     end_label_28: ;
  6382.     }
  6383.     if (!hasError) {
  6384.    
  6385.     jj_consume_token(RPAREN_T);
  6386.     }
  6387.    
  6388. return s+")";
  6389. assert(false);
  6390. }
  6391.  
  6392.  
  6393. QCString VhdlParser::next_statement() {QCString s,s1,s2;Token *t=0;Token *t1=0;if (!hasError) {
  6394.    
  6395.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6396.     case BASIC_IDENTIFIER:
  6397.     case EXTENDED_CHARACTER:{if (!hasError) {
  6398.      
  6399.       s = identifier();
  6400.       }
  6401.       if (!hasError) {
  6402.      
  6403.       t = jj_consume_token(COLON_T);
  6404.       }
  6405.      
  6406.       break;
  6407.       }
  6408.     default:
  6409.       jj_la1[142] = jj_gen;
  6410.       ;
  6411.     }
  6412.     }
  6413.     if (!hasError) {
  6414.    
  6415.     jj_consume_token(NEXT_T);
  6416.     }
  6417.     if (!hasError) {
  6418.    
  6419.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6420.     case BASIC_IDENTIFIER:
  6421.     case EXTENDED_CHARACTER:{if (!hasError) {
  6422.      
  6423.       s1 = identifier();
  6424.       }
  6425.      
  6426.       break;
  6427.       }
  6428.     default:
  6429.       jj_la1[143] = jj_gen;
  6430.       ;
  6431.     }
  6432.     }
  6433.     if (!hasError) {
  6434.    
  6435.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6436.     case WHEN_T:{if (!hasError) {
  6437.      
  6438.       t1 = jj_consume_token(WHEN_T);
  6439.       }
  6440.       if (!hasError) {
  6441.      
  6442.       s2 = condition();
  6443.       }
  6444.      
  6445.       break;
  6446.       }
  6447.     default:
  6448.       jj_la1[144] = jj_gen;
  6449.       ;
  6450.     }
  6451.     }
  6452.     if (!hasError) {
  6453.    
  6454.     jj_consume_token(SEMI_T);
  6455.     }
  6456.    
  6457. if(t) s+=":";
  6458.    FlowChart::addFlowChart(FlowChart::NEXT_NO,"next ",s2.data(),s1.data());
  6459.     lab.resize(0);
  6460.   if(t1) s2.prepend("when ");
  6461.   return s+s1+s2+";";
  6462. assert(false);
  6463. }
  6464.  
  6465.  
  6466. QCString VhdlParser::null_statement() {QCString s;if (!hasError) {
  6467.    
  6468.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6469.     case BASIC_IDENTIFIER:
  6470.     case EXTENDED_CHARACTER:{if (!hasError) {
  6471.      
  6472.       s = identifier();
  6473.       }
  6474.       if (!hasError) {
  6475.      
  6476.       jj_consume_token(COLON_T);
  6477.       }
  6478.       if (!hasError) {
  6479.      
  6480. s+=":";
  6481.       }
  6482.      
  6483.       break;
  6484.       }
  6485.     default:
  6486.       jj_la1[145] = jj_gen;
  6487.       ;
  6488.     }
  6489.     }
  6490.     if (!hasError) {
  6491.    
  6492.     jj_consume_token(NULL_T);
  6493.     }
  6494.     if (!hasError) {
  6495.    
  6496.     jj_consume_token(SEMI_T);
  6497.     }
  6498.    
  6499. return s+="null";
  6500. assert(false);
  6501. }
  6502.  
  6503.  
  6504. QCString VhdlParser::numeric_literal() {QCString s;
  6505.     if (jj_2_54(2147483647)) {if (!hasError) {
  6506.      
  6507.       s = physical_literal();
  6508.       }
  6509.       if (!hasError) {
  6510.      
  6511. return s;
  6512.       }
  6513.      
  6514.     } else {
  6515.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6516.       case INTEGER:
  6517.       case DECIMAL_LITERAL:
  6518.       case BASED_LITERAL:{if (!hasError) {
  6519.        
  6520.         s = abstract_literal();
  6521.         }
  6522.         if (!hasError) {
  6523.        
  6524. return s;
  6525.         }
  6526.        
  6527.         break;
  6528.         }
  6529.       default:
  6530.         jj_la1[146] = jj_gen;
  6531.         jj_consume_token(-1);
  6532.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  6533.       }
  6534.     }
  6535. assert(false);
  6536. }
  6537.  
  6538.  
  6539. QCString VhdlParser::object_class() {
  6540.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6541.     case CONSTANT_T:{if (!hasError) {
  6542.      
  6543.       jj_consume_token(CONSTANT_T);
  6544.       }
  6545.       if (!hasError) {
  6546.      
  6547. return "constant";
  6548.       }
  6549.      
  6550.       break;
  6551.       }
  6552.     case SIGNAL_T:{if (!hasError) {
  6553.      
  6554.       jj_consume_token(SIGNAL_T);
  6555.       }
  6556.       if (!hasError) {
  6557.      
  6558. return "signal";
  6559.       }
  6560.      
  6561.       break;
  6562.       }
  6563.     case VARIABLE_T:{if (!hasError) {
  6564.      
  6565.       jj_consume_token(VARIABLE_T);
  6566.       }
  6567.       if (!hasError) {
  6568.      
  6569. return "variable";
  6570.       }
  6571.      
  6572.       break;
  6573.       }
  6574.     case SHARED_T:{if (!hasError) {
  6575.      
  6576.       jj_consume_token(SHARED_T);
  6577.       }
  6578.       if (!hasError) {
  6579.      
  6580.       jj_consume_token(VARIABLE_T);
  6581.       }
  6582.       if (!hasError) {
  6583.      
  6584. return "shared variable";
  6585.       }
  6586.      
  6587.       break;
  6588.       }
  6589.     case FILE_T:{if (!hasError) {
  6590.      
  6591.       jj_consume_token(FILE_T);
  6592.       }
  6593.       if (!hasError) {
  6594.      
  6595. return "file";
  6596.       }
  6597.      
  6598.       break;
  6599.       }
  6600.     case TYPE_T:{if (!hasError) {
  6601.      
  6602.       jj_consume_token(TYPE_T);
  6603.       }
  6604.       if (!hasError) {
  6605.      
  6606. return "type";
  6607.       }
  6608.      
  6609.       break;
  6610.       }
  6611.     default:
  6612.       jj_la1[147] = jj_gen;
  6613.       jj_consume_token(-1);
  6614.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  6615.     }
  6616. assert(false);
  6617. }
  6618.  
  6619.  
  6620. QCString VhdlParser::operator_symbol() {Token *tok=0;if (!hasError) {
  6621.    
  6622.     tok = jj_consume_token(STRINGLITERAL);
  6623.     }
  6624.    
  6625. return tok->image.c_str();
  6626. assert(false);
  6627. }
  6628.  
  6629.  
  6630. void VhdlParser::options() {if (!hasError) {
  6631.    
  6632.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6633.     case GUARDED_T:{if (!hasError) {
  6634.      
  6635.       jj_consume_token(GUARDED_T);
  6636.       }
  6637.      
  6638.       break;
  6639.       }
  6640.     default:
  6641.       jj_la1[148] = jj_gen;
  6642.       ;
  6643.     }
  6644.     }
  6645.     if (!hasError) {
  6646.    
  6647.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6648.     case INERTIAL_T:
  6649.     case REJECT_T:
  6650.     case TRANSPORT_T:{if (!hasError) {
  6651.      
  6652.       delay_mechanism();
  6653.       }
  6654.      
  6655.       break;
  6656.       }
  6657.     default:
  6658.       jj_la1[149] = jj_gen;
  6659.       ;
  6660.     }
  6661.     }
  6662.    
  6663. }
  6664.  
  6665.  
  6666. void VhdlParser::package_body() {QCString s;if (!hasError) {
  6667.    
  6668.     jj_consume_token(PACKAGE_T);
  6669.     }
  6670.     if (!hasError) {
  6671.    
  6672.     jj_consume_token(BODY_T);
  6673.     }
  6674.     if (!hasError) {
  6675.    
  6676.     s = name();
  6677.     }
  6678.     if (!hasError) {
  6679.    
  6680.     jj_consume_token(IS_T);
  6681.     }
  6682.     if (!hasError) {
  6683.    
  6684. lastCompound=current;
  6685.                         s.prepend("_");
  6686.                         addVhdlType(s,getLine(),Entry::CLASS_SEC,VhdlDocGen::PACKAGE_BODY,0,0,Protected);
  6687.     }
  6688.     if (!hasError) {
  6689.    
  6690.     package_body_declarative_part();
  6691.     }
  6692.     if (!hasError) {
  6693.    
  6694.     jj_consume_token(END_T);
  6695.     }
  6696.     if (!hasError) {
  6697.    
  6698.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6699.     case PACKAGE_T:{if (!hasError) {
  6700.      
  6701.       jj_consume_token(PACKAGE_T);
  6702.       }
  6703.       if (!hasError) {
  6704.      
  6705.       jj_consume_token(BODY_T);
  6706.       }
  6707.      
  6708.       break;
  6709.       }
  6710.     default:
  6711.       jj_la1[150] = jj_gen;
  6712.       ;
  6713.     }
  6714.     }
  6715.     if (!hasError) {
  6716.    
  6717.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6718.     case SLSL_T:
  6719.     case STRINGLITERAL:
  6720.     case BASIC_IDENTIFIER:
  6721.     case EXTENDED_CHARACTER:{if (!hasError) {
  6722.      
  6723.       name();
  6724.       }
  6725.      
  6726.       break;
  6727.       }
  6728.     default:
  6729.       jj_la1[151] = jj_gen;
  6730.       ;
  6731.     }
  6732.     }
  6733.     if (!hasError) {
  6734.    
  6735.     jj_consume_token(SEMI_T);
  6736.     }
  6737.    
  6738. lastCompound=0; genLabels.resize(0);
  6739. }
  6740.  
  6741.  
  6742. void VhdlParser::package_body_declarative_item() {
  6743.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6744.     case FUNCTION_T:
  6745.     case IMPURE_T:
  6746.     case PROCEDURE_T:
  6747.     case PURE_T:{if (!hasError) {
  6748.      
  6749.       subprogram_declaration();
  6750.       }
  6751.      
  6752.       break;
  6753.       }
  6754.     case TYPE_T:{if (!hasError) {
  6755.      
  6756.       type_declaration();
  6757.       }
  6758.      
  6759.       break;
  6760.       }
  6761.     case SUBTYPE_T:{if (!hasError) {
  6762.      
  6763.       subtype_declaration();
  6764.       }
  6765.      
  6766.       break;
  6767.       }
  6768.     case CONSTANT_T:{if (!hasError) {
  6769.      
  6770.       constant_declaration();
  6771.       }
  6772.      
  6773.       break;
  6774.       }
  6775.     case SHARED_T:
  6776.     case VARIABLE_T:{if (!hasError) {
  6777.      
  6778.       variable_declaration();
  6779.       }
  6780.      
  6781.       break;
  6782.       }
  6783.     case FILE_T:{if (!hasError) {
  6784.      
  6785.       file_declaration();
  6786.       }
  6787.      
  6788.       break;
  6789.       }
  6790.     case ALIAS_T:{if (!hasError) {
  6791.      
  6792.       alias_declaration();
  6793.       }
  6794.      
  6795.       break;
  6796.       }
  6797.     case USE_T:{if (!hasError) {
  6798.      
  6799.       use_clause();
  6800.       }
  6801.      
  6802.       break;
  6803.       }
  6804.     default:
  6805.       jj_la1[152] = jj_gen;
  6806.       if (jj_2_55(3)) {if (!hasError) {
  6807.        
  6808.         group_template_declaration();
  6809.         }
  6810.        
  6811.       } else {
  6812.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6813.         case GROUP_T:{if (!hasError) {
  6814.          
  6815.           group_declaration();
  6816.           }
  6817.          
  6818.           break;
  6819.           }
  6820.         default:
  6821.           jj_la1[153] = jj_gen;
  6822.           jj_consume_token(-1);
  6823.           errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  6824.         }
  6825.       }
  6826.     }
  6827. }
  6828.  
  6829.  
  6830. void VhdlParser::package_body_declarative_part() {if (!hasError) {
  6831.    
  6832.     while (!hasError) {
  6833.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6834.       case ALIAS_T:
  6835.       case CONSTANT_T:
  6836.       case FILE_T:
  6837.       case FUNCTION_T:
  6838.       case GROUP_T:
  6839.       case IMPURE_T:
  6840.       case PROCEDURE_T:
  6841.       case PURE_T:
  6842.       case SHARED_T:
  6843.       case SUBTYPE_T:
  6844.       case TYPE_T:
  6845.       case USE_T:
  6846.       case VARIABLE_T:{
  6847.         ;
  6848.         break;
  6849.         }
  6850.       default:
  6851.         jj_la1[154] = jj_gen;
  6852.         goto end_label_29;
  6853.       }if (!hasError) {
  6854.      
  6855.       package_body_declarative_item();
  6856.       }
  6857.      
  6858.     }
  6859.     end_label_29: ;
  6860.     }
  6861.    
  6862. }
  6863.  
  6864.  
  6865. void VhdlParser::package_declaration() {QCString s;if (!hasError) {
  6866.    
  6867.     jj_consume_token(PACKAGE_T);
  6868.     }
  6869.     if (!hasError) {
  6870.    
  6871.     s = identifier();
  6872.     }
  6873.     if (!hasError) {
  6874.    
  6875.     jj_consume_token(IS_T);
  6876.     }
  6877.     if (!hasError) {
  6878.    
  6879. lastCompound=current;
  6880.                           Entry *clone=new Entry(*current);
  6881.                           clone->section=Entry::NAMESPACE_SEC;
  6882.                           clone->spec=VhdlDocGen::PACKAGE;
  6883.                           clone->name=s;
  6884.                           clone->startLine=getLine(PACKAGE_T);
  6885.                           clone->bodyLine=getLine(PACKAGE_T);
  6886.                           clone->protection=Package;
  6887.                           current_root->addSubEntry(clone);
  6888.                           addVhdlType(s,getLine(PACKAGE_T),Entry::CLASS_SEC,VhdlDocGen::PACKAGE,0,0,Package);
  6889.     }
  6890.     if (!hasError) {
  6891.    
  6892.     package_declarative_part();
  6893.     }
  6894.     if (!hasError) {
  6895.    
  6896.     jj_consume_token(END_T);
  6897.     }
  6898.     if (!hasError) {
  6899.    
  6900.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6901.     case PACKAGE_T:{if (!hasError) {
  6902.      
  6903.       jj_consume_token(PACKAGE_T);
  6904.       }
  6905.      
  6906.       break;
  6907.       }
  6908.     default:
  6909.       jj_la1[155] = jj_gen;
  6910.       ;
  6911.     }
  6912.     }
  6913.     if (!hasError) {
  6914.    
  6915.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6916.     case SLSL_T:
  6917.     case STRINGLITERAL:
  6918.     case BASIC_IDENTIFIER:
  6919.     case EXTENDED_CHARACTER:{if (!hasError) {
  6920.      
  6921.       name();
  6922.       }
  6923.      
  6924.       break;
  6925.       }
  6926.     default:
  6927.       jj_la1[156] = jj_gen;
  6928.       ;
  6929.     }
  6930.     }
  6931.     if (!hasError) {
  6932.    
  6933.     jj_consume_token(SEMI_T);
  6934.     }
  6935.    
  6936. lastEntity=0;lastCompound=0; genLabels.resize(0);
  6937. }
  6938.  
  6939.  
  6940. void VhdlParser::geninter() {if (!hasError) {
  6941.    
  6942.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6943.     case GENERIC_T:{if (!hasError) {
  6944.      
  6945.       gen_interface_list();
  6946.       }
  6947.       if (!hasError) {
  6948.      
  6949.       jj_consume_token(SEMI_T);
  6950.       }
  6951.       if (!hasError) {
  6952.      
  6953.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6954.       case GENERIC_T:{if (!hasError) {
  6955.        
  6956.         gen_assoc_list();
  6957.         }
  6958.         if (!hasError) {
  6959.        
  6960.         jj_consume_token(SEMI_T);
  6961.         }
  6962.        
  6963.         break;
  6964.         }
  6965.       default:
  6966.         jj_la1[157] = jj_gen;
  6967.         ;
  6968.       }
  6969.       }
  6970.      
  6971.       break;
  6972.       }
  6973.     default:
  6974.       jj_la1[158] = jj_gen;
  6975.       ;
  6976.     }
  6977.     }
  6978.    
  6979. }
  6980.  
  6981.  
  6982. void VhdlParser::package_declarative_item() {
  6983.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  6984.     case FUNCTION_T:
  6985.     case IMPURE_T:
  6986.     case PROCEDURE_T:
  6987.     case PURE_T:{if (!hasError) {
  6988.      
  6989.       subprogram_declaration();
  6990.       }
  6991.      
  6992.       break;
  6993.       }
  6994.     case TYPE_T:{if (!hasError) {
  6995.      
  6996.       type_declaration();
  6997.       }
  6998.      
  6999.       break;
  7000.       }
  7001.     case SUBTYPE_T:{if (!hasError) {
  7002.      
  7003.       subtype_declaration();
  7004.       }
  7005.      
  7006.       break;
  7007.       }
  7008.     case CONSTANT_T:{if (!hasError) {
  7009.      
  7010.       constant_declaration();
  7011.       }
  7012.      
  7013.       break;
  7014.       }
  7015.     case SIGNAL_T:{if (!hasError) {
  7016.      
  7017.       signal_declaration();
  7018.       }
  7019.      
  7020.       break;
  7021.       }
  7022.     case SHARED_T:
  7023.     case VARIABLE_T:{if (!hasError) {
  7024.      
  7025.       variable_declaration();
  7026.       }
  7027.      
  7028.       break;
  7029.       }
  7030.     case FILE_T:{if (!hasError) {
  7031.      
  7032.       file_declaration();
  7033.       }
  7034.      
  7035.       break;
  7036.       }
  7037.     case ALIAS_T:{if (!hasError) {
  7038.      
  7039.       alias_declaration();
  7040.       }
  7041.      
  7042.       break;
  7043.       }
  7044.     case COMPONENT_T:{if (!hasError) {
  7045.      
  7046.       component_declaration();
  7047.       }
  7048.      
  7049.       break;
  7050.       }
  7051.     default:
  7052.       jj_la1[159] = jj_gen;
  7053.       if (jj_2_56(2147483647)) {if (!hasError) {
  7054.        
  7055.         attribute_declaration();
  7056.         }
  7057.        
  7058.       } else {
  7059.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7060.         case ATTRIBUTE_T:{if (!hasError) {
  7061.          
  7062.           attribute_specification();
  7063.           }
  7064.          
  7065.           break;
  7066.           }
  7067.         case DISCONNECT_T:{if (!hasError) {
  7068.          
  7069.           disconnection_specification();
  7070.           }
  7071.          
  7072.           break;
  7073.           }
  7074.         case USE_T:{if (!hasError) {
  7075.          
  7076.           use_clause();
  7077.           }
  7078.          
  7079.           break;
  7080.           }
  7081.         default:
  7082.           jj_la1[160] = jj_gen;
  7083.           if (jj_2_57(3)) {if (!hasError) {
  7084.            
  7085.             group_template_declaration();
  7086.             }
  7087.            
  7088.           } else {
  7089.             switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7090.             case GROUP_T:{if (!hasError) {
  7091.              
  7092.               group_declaration();
  7093.               }
  7094.              
  7095.               break;
  7096.               }
  7097.             default:
  7098.               jj_la1[161] = jj_gen;
  7099.               if (jj_2_58(5)) {if (!hasError) {
  7100.                
  7101.                 package_instantiation_declaration();
  7102.                 }
  7103.                
  7104.               } else {
  7105.                 switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7106.                 case PACKAGE_T:{if (!hasError) {
  7107.                  
  7108.                   package_declaration();
  7109.                   }
  7110.                  
  7111.                   break;
  7112.                   }
  7113.                 default:
  7114.                   jj_la1[162] = jj_gen;
  7115.                   jj_consume_token(-1);
  7116.                   errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  7117.                 }
  7118.               }
  7119.             }
  7120.           }
  7121.         }
  7122.       }
  7123.     }
  7124. }
  7125.  
  7126.  
  7127. void VhdlParser::package_declarative_part() {if (!hasError) {
  7128.    
  7129.     while (!hasError) {
  7130.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7131.       case ALIAS_T:
  7132.       case ATTRIBUTE_T:
  7133.       case COMPONENT_T:
  7134.       case CONSTANT_T:
  7135.       case DISCONNECT_T:
  7136.       case FILE_T:
  7137.       case FUNCTION_T:
  7138.       case GROUP_T:
  7139.       case IMPURE_T:
  7140.       case PACKAGE_T:
  7141.       case PROCEDURE_T:
  7142.       case PURE_T:
  7143.       case SIGNAL_T:
  7144.       case SHARED_T:
  7145.       case SUBTYPE_T:
  7146.       case TYPE_T:
  7147.       case USE_T:
  7148.       case VARIABLE_T:{
  7149.         ;
  7150.         break;
  7151.         }
  7152.       default:
  7153.         jj_la1[163] = jj_gen;
  7154.         goto end_label_30;
  7155.       }if (!hasError) {
  7156.      
  7157.       package_declarative_item();
  7158.       }
  7159.      
  7160.     }
  7161.     end_label_30: ;
  7162.     }
  7163.    
  7164. }
  7165.  
  7166.  
  7167. QCString VhdlParser::parameter_specification() {QCString s,s1;if (!hasError) {
  7168.    
  7169.     s = identifier();
  7170.     }
  7171.     if (!hasError) {
  7172.    
  7173.     jj_consume_token(IN_T);
  7174.     }
  7175.     if (!hasError) {
  7176.    
  7177.     s1 = discrete_range();
  7178.     }
  7179.    
  7180. return s+" in "+s1;
  7181. assert(false);
  7182. }
  7183.  
  7184.  
  7185. QCString VhdlParser::physical_literal() {QCString s,s1;if (!hasError) {
  7186.    
  7187.     if (jj_2_59(2147483647)) {if (!hasError) {
  7188.      
  7189.       s = abstract_literal();
  7190.       }
  7191.      
  7192.     } else {
  7193.       ;
  7194.     }
  7195.     }
  7196.     if (!hasError) {
  7197.    
  7198.     s1 = name();
  7199.     }
  7200.    
  7201. s+=" ";s+=s1;s.prepend(" "); return s;
  7202. assert(false);
  7203. }
  7204.  
  7205.  
  7206. QCString VhdlParser::physical_type_definition() {QCString s,s1,s2;if (!hasError) {
  7207.    
  7208.     jj_consume_token(UNITS_T);
  7209.     }
  7210.     if (!hasError) {
  7211.    
  7212.     s = identifier();
  7213.     }
  7214.     if (!hasError) {
  7215.    
  7216.     jj_consume_token(SEMI_T);
  7217.     }
  7218.     if (!hasError) {
  7219.    
  7220. addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,0,Public);
  7221.     }
  7222.     if (!hasError) {
  7223.    
  7224.     while (!hasError) {
  7225.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7226.       case BASIC_IDENTIFIER:
  7227.       case EXTENDED_CHARACTER:{
  7228.         ;
  7229.         break;
  7230.         }
  7231.       default:
  7232.         jj_la1[164] = jj_gen;
  7233.         goto end_label_31;
  7234.       }if (!hasError) {
  7235.      
  7236.       s1 = secondary_unit_declaration();
  7237.       }
  7238.      
  7239.     }
  7240.     end_label_31: ;
  7241.     }
  7242.     if (!hasError) {
  7243.    
  7244.     jj_consume_token(END_T);
  7245.     }
  7246.     if (!hasError) {
  7247.    
  7248.     jj_consume_token(UNITS_T);
  7249.     }
  7250.     if (!hasError) {
  7251.    
  7252.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7253.     case SLSL_T:
  7254.     case STRINGLITERAL:
  7255.     case BASIC_IDENTIFIER:
  7256.     case EXTENDED_CHARACTER:{if (!hasError) {
  7257.      
  7258.       name();
  7259.       }
  7260.      
  7261.       break;
  7262.       }
  7263.     default:
  7264.       jj_la1[165] = jj_gen;
  7265.       ;
  7266.     }
  7267.     }
  7268.    
  7269. return s+"%";
  7270. assert(false);
  7271. }
  7272.  
  7273.  
  7274. void VhdlParser::port_clause() {if (!hasError) {
  7275.    
  7276.     jj_consume_token(PORT_T);
  7277.     }
  7278.     if (!hasError) {
  7279.    
  7280.     jj_consume_token(LPAREN_T);
  7281.     }
  7282.     if (!hasError) {
  7283.    
  7284.     port_list();
  7285.     }
  7286.     if (!hasError) {
  7287.    
  7288.     jj_consume_token(RPAREN_T);
  7289.     }
  7290.     if (!hasError) {
  7291.    
  7292.     jj_consume_token(SEMI_T);
  7293.     }
  7294.    
  7295. currP=0;
  7296. }
  7297.  
  7298.  
  7299. QCString VhdlParser::port_list() {QCString s;if (!hasError) {
  7300.    
  7301.     s = interface_list();
  7302.     }
  7303.    
  7304. return s;
  7305. assert(false);
  7306. }
  7307.  
  7308.  
  7309. void VhdlParser::port_map_aspect() {if (!hasError) {
  7310.    
  7311.     jj_consume_token(PORT_T);
  7312.     }
  7313.     if (!hasError) {
  7314.    
  7315.     jj_consume_token(MAP_T);
  7316.     }
  7317.     if (!hasError) {
  7318.    
  7319.     jj_consume_token(LPAREN_T);
  7320.     }
  7321.     if (!hasError) {
  7322.    
  7323.     association_list();
  7324.     }
  7325.     if (!hasError) {
  7326.    
  7327.     jj_consume_token(RPAREN_T);
  7328.     }
  7329.    
  7330. }
  7331.  
  7332.  
  7333. QCString VhdlParser::primary() {QCString s,s1;
  7334.     if (jj_2_60(2147483647)) {if (!hasError) {
  7335.      
  7336.       s = function_call();
  7337.       }
  7338.       if (!hasError) {
  7339.      
  7340. return s;
  7341.       }
  7342.      
  7343.     } else if (jj_2_61(2147483647)) {if (!hasError) {
  7344.      
  7345.       jj_consume_token(LPAREN_T);
  7346.       }
  7347.       if (!hasError) {
  7348.      
  7349.       s1 = expression();
  7350.       }
  7351.       if (!hasError) {
  7352.      
  7353.       jj_consume_token(RPAREN_T);
  7354.       }
  7355.       if (!hasError) {
  7356.      
  7357. s="("+s1+")"; return s;
  7358.       }
  7359.      
  7360.     } else if (jj_2_62(2147483647)) {if (!hasError) {
  7361.      
  7362.       s = qualified_expression();
  7363.       }
  7364.       if (!hasError) {
  7365.      
  7366. return s;
  7367.       }
  7368.      
  7369.     } else if (jj_2_63(2147483647)) {if (!hasError) {
  7370.      
  7371.       s = type_conversion();
  7372.       }
  7373.       if (!hasError) {
  7374.      
  7375. return s;
  7376.       }
  7377.      
  7378.     } else if (jj_2_64(2147483647)) {if (!hasError) {
  7379.      
  7380.       s = literal();
  7381.       }
  7382.       if (!hasError) {
  7383.      
  7384. s.prepend(" ");return s;
  7385.       }
  7386.      
  7387.     } else if (jj_2_65(2147483647)) {if (!hasError) {
  7388.      
  7389.       s = name();
  7390.       }
  7391.       if (!hasError) {
  7392.      
  7393. return s;
  7394.       }
  7395.      
  7396.     } else {
  7397.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7398.       case NEW_T:{if (!hasError) {
  7399.        
  7400.         allocator();
  7401.         }
  7402.         if (!hasError) {
  7403.        
  7404. return "";
  7405.         }
  7406.        
  7407.         break;
  7408.         }
  7409.       case LPAREN_T:{if (!hasError) {
  7410.        
  7411.         s = aggregate();
  7412.         }
  7413.         if (!hasError) {
  7414.        
  7415. return s;
  7416.         }
  7417.        
  7418.         break;
  7419.         }
  7420.       default:
  7421.         jj_la1[166] = jj_gen;
  7422.         jj_consume_token(-1);
  7423.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  7424.       }
  7425.     }
  7426. assert(false);
  7427. }
  7428.  
  7429.  
  7430. void VhdlParser::primary_unit() {
  7431.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7432.     case ENTITY_T:{if (!hasError) {
  7433.      
  7434.       entity_declaration();
  7435.       }
  7436.      
  7437.       break;
  7438.       }
  7439.     case CONFIGURATION_T:{if (!hasError) {
  7440.      
  7441.       configuration_declaration();
  7442.       }
  7443.      
  7444.       break;
  7445.       }
  7446.     default:
  7447.       jj_la1[167] = jj_gen;
  7448.       if (jj_2_66(2147483647)) {if (!hasError) {
  7449.        
  7450.         package_instantiation_declaration();
  7451.         }
  7452.        
  7453.       } else if (jj_2_67(4)) {if (!hasError) {
  7454.        
  7455.         interface_package_declaration();
  7456.         }
  7457.        
  7458.       } else {
  7459.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7460.         case PACKAGE_T:{if (!hasError) {
  7461.          
  7462.           package_declaration();
  7463.           }
  7464.          
  7465.           break;
  7466.           }
  7467.         default:
  7468.           jj_la1[168] = jj_gen;
  7469.           jj_consume_token(-1);
  7470.           errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  7471.         }
  7472.       }
  7473.     }
  7474. }
  7475.  
  7476.  
  7477. QCString VhdlParser::procedure_call() {QCString s,s1;if (!hasError) {
  7478.    
  7479.     s = name();
  7480.     }
  7481.     if (!hasError) {
  7482.    
  7483.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7484.     case LPAREN_T:{if (!hasError) {
  7485.      
  7486.       jj_consume_token(LPAREN_T);
  7487.       }
  7488.       if (!hasError) {
  7489.      
  7490.       s1 = actual_parameter_part();
  7491.       }
  7492.       if (!hasError) {
  7493.      
  7494.       jj_consume_token(RPAREN_T);
  7495.       }
  7496.       if (!hasError) {
  7497.      
  7498. s1.prepend("("); s1.append(")");
  7499.       }
  7500.      
  7501.       break;
  7502.       }
  7503.     default:
  7504.       jj_la1[169] = jj_gen;
  7505.       ;
  7506.     }
  7507.     }
  7508.    
  7509. return s+s1;
  7510. assert(false);
  7511. }
  7512.  
  7513.  
  7514. QCString VhdlParser::procedure_call_statement() {QCString s,s1;if (!hasError) {
  7515.    
  7516.     if (jj_2_68(2)) {if (!hasError) {
  7517.      
  7518.       s = identifier();
  7519.       }
  7520.       if (!hasError) {
  7521.      
  7522.       jj_consume_token(COLON_T);
  7523.       }
  7524.       if (!hasError) {
  7525.      
  7526. s+=":";
  7527.       }
  7528.      
  7529.     } else {
  7530.       ;
  7531.     }
  7532.     }
  7533.     if (!hasError) {
  7534.    
  7535.     s1 = procedure_call();
  7536.     }
  7537.     if (!hasError) {
  7538.    
  7539.     jj_consume_token(SEMI_T);
  7540.     }
  7541.    
  7542. return s+s1+";";
  7543. assert(false);
  7544. }
  7545.  
  7546.  
  7547. QCString VhdlParser::process_declarative_item() {QCString s;
  7548.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7549.     case FUNCTION_T:
  7550.     case IMPURE_T:
  7551.     case PROCEDURE_T:
  7552.     case PURE_T:{if (!hasError) {
  7553.      
  7554.       subprogram_declaration();
  7555.       }
  7556.       if (!hasError) {
  7557.      
  7558. return "";
  7559.       }
  7560.      
  7561.       break;
  7562.       }
  7563.     case TYPE_T:{if (!hasError) {
  7564.      
  7565.       s = type_declaration();
  7566.       }
  7567.       if (!hasError) {
  7568.      
  7569. return s;
  7570.       }
  7571.      
  7572.       break;
  7573.       }
  7574.     case SUBTYPE_T:{if (!hasError) {
  7575.      
  7576.       s = subtype_declaration();
  7577.       }
  7578.       if (!hasError) {
  7579.      
  7580. return s;
  7581.       }
  7582.      
  7583.       break;
  7584.       }
  7585.     case CONSTANT_T:{if (!hasError) {
  7586.      
  7587.       s = constant_declaration();
  7588.       }
  7589.       if (!hasError) {
  7590.      
  7591. return s;
  7592.       }
  7593.      
  7594.       break;
  7595.       }
  7596.     case SHARED_T:
  7597.     case VARIABLE_T:{if (!hasError) {
  7598.      
  7599.       s = variable_declaration();
  7600.       }
  7601.       if (!hasError) {
  7602.      
  7603. return s;
  7604.       }
  7605.      
  7606.       break;
  7607.       }
  7608.     case FILE_T:{if (!hasError) {
  7609.      
  7610.       s = file_declaration();
  7611.       }
  7612.       if (!hasError) {
  7613.      
  7614. return s;
  7615.       }
  7616.      
  7617.       break;
  7618.       }
  7619.     case ALIAS_T:{if (!hasError) {
  7620.      
  7621.       s = alias_declaration();
  7622.       }
  7623.       if (!hasError) {
  7624.      
  7625. return s;
  7626.       }
  7627.      
  7628.       break;
  7629.       }
  7630.     default:
  7631.       jj_la1[170] = jj_gen;
  7632.       if (jj_2_69(3)) {if (!hasError) {
  7633.        
  7634.         s = attribute_declaration();
  7635.         }
  7636.         if (!hasError) {
  7637.        
  7638. return s;
  7639.         }
  7640.        
  7641.       } else {
  7642.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7643.         case ATTRIBUTE_T:{if (!hasError) {
  7644.          
  7645.           s = attribute_specification();
  7646.           }
  7647.           if (!hasError) {
  7648.          
  7649. return s;
  7650.           }
  7651.          
  7652.           break;
  7653.           }
  7654.         case USE_T:{if (!hasError) {
  7655.          
  7656.           s = use_clause();
  7657.           }
  7658.           if (!hasError) {
  7659.          
  7660. return s;
  7661.           }
  7662.          
  7663.           break;
  7664.           }
  7665.         default:
  7666.           jj_la1[171] = jj_gen;
  7667.           if (jj_2_70(3)) {if (!hasError) {
  7668.            
  7669.             s = group_template_declaration();
  7670.             }
  7671.             if (!hasError) {
  7672.            
  7673. return s;
  7674.             }
  7675.            
  7676.           } else {
  7677.             switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7678.             case GROUP_T:{if (!hasError) {
  7679.              
  7680.               s = group_declaration();
  7681.               }
  7682.               if (!hasError) {
  7683.              
  7684. return s;
  7685.               }
  7686.              
  7687.               break;
  7688.               }
  7689.             default:
  7690.               jj_la1[172] = jj_gen;
  7691.               jj_consume_token(-1);
  7692.               errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  7693.             }
  7694.           }
  7695.         }
  7696.       }
  7697.     }
  7698. assert(false);
  7699. }
  7700.  
  7701.  
  7702. QCString VhdlParser::process_declarative_part() {QCString s,s1;if (!hasError) {
  7703.    
  7704.     while (!hasError) {
  7705.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7706.       case ALIAS_T:
  7707.       case ATTRIBUTE_T:
  7708.       case CONSTANT_T:
  7709.       case FILE_T:
  7710.       case FUNCTION_T:
  7711.       case GROUP_T:
  7712.       case IMPURE_T:
  7713.       case PROCEDURE_T:
  7714.       case PURE_T:
  7715.       case SHARED_T:
  7716.       case SUBTYPE_T:
  7717.       case TYPE_T:
  7718.       case USE_T:
  7719.       case VARIABLE_T:{
  7720.         ;
  7721.         break;
  7722.         }
  7723.       default:
  7724.         jj_la1[173] = jj_gen;
  7725.         goto end_label_32;
  7726.       }if (!hasError) {
  7727.      
  7728.       s1 = process_declarative_item();
  7729.       }
  7730.       if (!hasError) {
  7731.      
  7732. s+=s1;
  7733.       }
  7734.      
  7735.     }
  7736.     end_label_32: ;
  7737.     }
  7738.    
  7739. return s;
  7740. assert(false);
  7741. }
  7742.  
  7743.  
  7744. void VhdlParser::process_statement() {QCString s,s1,s2;Token *tok=0;if (!hasError) {
  7745.    
  7746.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7747.     case BASIC_IDENTIFIER:
  7748.     case EXTENDED_CHARACTER:{if (!hasError) {
  7749.      
  7750.       s = identifier();
  7751.       }
  7752.       if (!hasError) {
  7753.      
  7754.       jj_consume_token(COLON_T);
  7755.       }
  7756.      
  7757.       break;
  7758.       }
  7759.     default:
  7760.       jj_la1[174] = jj_gen;
  7761.       ;
  7762.     }
  7763.     }
  7764.     if (!hasError) {
  7765.    
  7766.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7767.     case POSTPONED_T:{if (!hasError) {
  7768.      
  7769.       jj_consume_token(POSTPONED_T);
  7770.       }
  7771.      
  7772.       break;
  7773.       }
  7774.     default:
  7775.       jj_la1[175] = jj_gen;
  7776.       ;
  7777.     }
  7778.     }
  7779.     if (!hasError) {
  7780.    
  7781. currP=VhdlDocGen::PROCESS;
  7782.                current->startLine=getLine();
  7783.                current->bodyLine=getLine();
  7784.     }
  7785.     if (!hasError) {
  7786.    
  7787.     jj_consume_token(PROCESS_T);
  7788.     }
  7789.     if (!hasError) {
  7790.    
  7791.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7792.     case LPAREN_T:{if (!hasError) {
  7793.      
  7794.       jj_consume_token(LPAREN_T);
  7795.       }
  7796.       if (!hasError) {
  7797.      
  7798.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7799.       case ALL_T:{if (!hasError) {
  7800.        
  7801.         tok = jj_consume_token(ALL_T);
  7802.         }
  7803.        
  7804.         break;
  7805.         }
  7806.       case SLSL_T:
  7807.       case STRINGLITERAL:
  7808.       case BASIC_IDENTIFIER:
  7809.       case EXTENDED_CHARACTER:{if (!hasError) {
  7810.        
  7811.         s1 = sensitivity_list();
  7812.         }
  7813.        
  7814.         break;
  7815.         }
  7816.       default:
  7817.         jj_la1[176] = jj_gen;
  7818.         jj_consume_token(-1);
  7819.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  7820.       }
  7821.       }
  7822.       if (!hasError) {
  7823.      
  7824.       jj_consume_token(RPAREN_T);
  7825.       }
  7826.      
  7827.       break;
  7828.       }
  7829.     default:
  7830.       jj_la1[177] = jj_gen;
  7831.       ;
  7832.     }
  7833.     }
  7834.     if (!hasError) {
  7835.    
  7836.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7837.     case IS_T:{if (!hasError) {
  7838.      
  7839.       jj_consume_token(IS_T);
  7840.       }
  7841.      
  7842.       break;
  7843.       }
  7844.     default:
  7845.       jj_la1[178] = jj_gen;
  7846.       ;
  7847.     }
  7848.     }
  7849.     if (!hasError) {
  7850.    
  7851.     s2 = process_declarative_part();
  7852.     }
  7853.     if (!hasError) {
  7854.    
  7855. if (s2.data())
  7856.                   FlowChart::addFlowChart(FlowChart::VARIABLE_NO,s2.data(),0);
  7857.                 FlowChart::addFlowChart(FlowChart::BEGIN_NO,"BEGIN",0);
  7858.     }
  7859.     if (!hasError) {
  7860.    
  7861.     jj_consume_token(BEGIN_T);
  7862.     }
  7863.     if (!hasError) {
  7864.    
  7865.     process_statement_part();
  7866.     }
  7867.     if (!hasError) {
  7868.    
  7869.     jj_consume_token(END_T);
  7870.     }
  7871.     if (!hasError) {
  7872.    
  7873.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7874.     case POSTPONED_T:{if (!hasError) {
  7875.      
  7876.       jj_consume_token(POSTPONED_T);
  7877.       }
  7878.      
  7879.       break;
  7880.       }
  7881.     default:
  7882.       jj_la1[179] = jj_gen;
  7883.       ;
  7884.     }
  7885.     }
  7886.     if (!hasError) {
  7887.    
  7888.     jj_consume_token(PROCESS_T);
  7889.     }
  7890.     if (!hasError) {
  7891.    
  7892.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7893.     case BASIC_IDENTIFIER:
  7894.     case EXTENDED_CHARACTER:{if (!hasError) {
  7895.      
  7896.       identifier();
  7897.       }
  7898.      
  7899.       break;
  7900.       }
  7901.     default:
  7902.       jj_la1[180] = jj_gen;
  7903.       ;
  7904.     }
  7905.     }
  7906.     if (!hasError) {
  7907.    
  7908.     jj_consume_token(SEMI_T);
  7909.     }
  7910.    
  7911. if(s.isEmpty())
  7912.    currName=VhdlDocGen::getProcessNumber();
  7913.    else
  7914.    currName=s;
  7915.  
  7916.    current->name=currName;
  7917.    tempEntry=current;
  7918.    current->endBodyLine=getLine();
  7919.    currP=0;
  7920.  if(tok)
  7921.    s1=tok->image.data();
  7922.   createFunction(currName,VhdlDocGen::PROCESS,s1.data());
  7923.   createFlow();
  7924.    currName="";
  7925.    newEntry();
  7926. }
  7927.  
  7928.  
  7929. void VhdlParser::process_statement_part() {if (!hasError) {
  7930.    
  7931.     while (!hasError) {
  7932.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7933.       case ASSERT_T:
  7934.       case CASE_T:
  7935.       case EXIT_T:
  7936.       case FOR_T:
  7937.       case IF_T:
  7938.       case LOOP_T:
  7939.       case NEXT_T:
  7940.       case NULL_T:
  7941.       case REPORT_T:
  7942.       case RETURN_T:
  7943.       case WAIT_T:
  7944.       case WHILE_T:
  7945.       case WITH_T:
  7946.       case LPAREN_T:
  7947.       case SLSL_T:
  7948.       case STRINGLITERAL:
  7949.       case BASIC_IDENTIFIER:
  7950.       case EXTENDED_CHARACTER:{
  7951.         ;
  7952.         break;
  7953.         }
  7954.       default:
  7955.         jj_la1[181] = jj_gen;
  7956.         goto end_label_33;
  7957.       }if (!hasError) {
  7958.      
  7959.       sequential_statement();
  7960.       }
  7961.      
  7962.     }
  7963.     end_label_33: ;
  7964.     }
  7965.    
  7966. }
  7967.  
  7968.  
  7969. QCString VhdlParser::qualified_expression() {QCString s,s1;if (!hasError) {
  7970.    
  7971.     s1 = identifier();
  7972.     }
  7973.     if (!hasError) {
  7974.    
  7975.     jj_consume_token(APOSTROPHE_T);
  7976.     }
  7977.     if (!hasError) {
  7978.    
  7979. s=s1+"'";
  7980.     }
  7981.     if (!hasError) {
  7982.    
  7983.     if (jj_2_71(2147483647)) {if (!hasError) {
  7984.      
  7985.       s1 = aggregate();
  7986.       }
  7987.       if (!hasError) {
  7988.      
  7989. s+=s1;
  7990.       }
  7991.      
  7992.     } else {
  7993.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  7994.       case LPAREN_T:{if (!hasError) {
  7995.        
  7996.         jj_consume_token(LPAREN_T);
  7997.         }
  7998.         if (!hasError) {
  7999.        
  8000.         s1 = expression();
  8001.         }
  8002.         if (!hasError) {
  8003.        
  8004.         jj_consume_token(RPAREN_T);
  8005.         }
  8006.         if (!hasError) {
  8007.        
  8008. s+="(";s+=s1;s+=")";
  8009.         }
  8010.        
  8011.         break;
  8012.         }
  8013.       default:
  8014.         jj_la1[182] = jj_gen;
  8015.         jj_consume_token(-1);
  8016.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  8017.       }
  8018.     }
  8019.     }
  8020.    
  8021. return s;
  8022. assert(false);
  8023. }
  8024.  
  8025.  
  8026. QCString VhdlParser::range() {QCString s,s1,s2;
  8027.     if (jj_2_72(2147483647)) {if (!hasError) {
  8028.      
  8029.       s = simple_expression();
  8030.       }
  8031.       if (!hasError) {
  8032.      
  8033.       s1 = direction();
  8034.       }
  8035.       if (!hasError) {
  8036.      
  8037.       s2 = simple_expression();
  8038.       }
  8039.       if (!hasError) {
  8040.      
  8041. return s+" "+s1+" "+s2;
  8042.       }
  8043.      
  8044.     } else if (jj_2_73(2147483647)) {if (!hasError) {
  8045.      
  8046.       s = attribute_name();
  8047.       }
  8048.       if (!hasError) {
  8049.      
  8050. return s;
  8051.       }
  8052.      
  8053.     } else {
  8054.       jj_consume_token(-1);
  8055.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  8056.     }
  8057. assert(false);
  8058. }
  8059.  
  8060.  
  8061. QCString VhdlParser::range_constraint() {QCString s,s1;if (!hasError) {
  8062.    
  8063.     jj_consume_token(RANGE_T);
  8064.     }
  8065.     if (!hasError) {
  8066.    
  8067.     s = range();
  8068.     }
  8069.    
  8070. return " range "+s;
  8071. assert(false);
  8072. }
  8073.  
  8074.  
  8075. void VhdlParser::record_type_definition() {if (!hasError) {
  8076.    
  8077.     jj_consume_token(RECORD_T);
  8078.     }
  8079.     if (!hasError) {
  8080.    
  8081.     while (!hasError) {if (!hasError) {
  8082.      
  8083.       element_declaration();
  8084.       }
  8085.      
  8086.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8087.       case BASIC_IDENTIFIER:
  8088.       case EXTENDED_CHARACTER:{
  8089.         ;
  8090.         break;
  8091.         }
  8092.       default:
  8093.         jj_la1[183] = jj_gen;
  8094.         goto end_label_34;
  8095.       }
  8096.     }
  8097.     end_label_34: ;
  8098.     }
  8099.     if (!hasError) {
  8100.    
  8101.     jj_consume_token(END_T);
  8102.     }
  8103.     if (!hasError) {
  8104.    
  8105.     jj_consume_token(RECORD_T);
  8106.     }
  8107.     if (!hasError) {
  8108.    
  8109.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8110.     case SLSL_T:
  8111.     case STRINGLITERAL:
  8112.     case BASIC_IDENTIFIER:
  8113.     case EXTENDED_CHARACTER:{if (!hasError) {
  8114.      
  8115.       name();
  8116.       }
  8117.      
  8118.       break;
  8119.       }
  8120.     default:
  8121.       jj_la1[184] = jj_gen;
  8122.       ;
  8123.     }
  8124.     }
  8125.    
  8126. }
  8127.  
  8128.  
  8129. QCString VhdlParser::relation() {QCString s,s1,s2;if (!hasError) {
  8130.    
  8131.     s = shift_expression();
  8132.     }
  8133.     if (!hasError) {
  8134.    
  8135.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8136.     case LESSTHAN_T:
  8137.     case GREATERTHAN_T:
  8138.     case LT_T:
  8139.     case GT_T:
  8140.     case EQU_T:
  8141.     case NOTEQU_T:{if (!hasError) {
  8142.      
  8143.       s1 = relation_operator();
  8144.       }
  8145.       if (!hasError) {
  8146.      
  8147.       s2 = shift_expression();
  8148.       }
  8149.      
  8150.       break;
  8151.       }
  8152.     default:
  8153.       jj_la1[185] = jj_gen;
  8154.       ;
  8155.     }
  8156.     }
  8157.    
  8158. return s+s1+s2;
  8159. assert(false);
  8160. }
  8161.  
  8162.  
  8163. QCString VhdlParser::relation_operator() {
  8164.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8165.     case LT_T:{if (!hasError) {
  8166.      
  8167.       jj_consume_token(LT_T);
  8168.       }
  8169.       if (!hasError) {
  8170.      
  8171. return "<";
  8172.       }
  8173.      
  8174.       break;
  8175.       }
  8176.     case GT_T:{if (!hasError) {
  8177.      
  8178.       jj_consume_token(GT_T);
  8179.       }
  8180.       if (!hasError) {
  8181.      
  8182. return ">";
  8183.       }
  8184.      
  8185.       break;
  8186.       }
  8187.     case EQU_T:{if (!hasError) {
  8188.      
  8189.       jj_consume_token(EQU_T);
  8190.       }
  8191.       if (!hasError) {
  8192.      
  8193. return "=";
  8194.       }
  8195.      
  8196.       break;
  8197.       }
  8198.     case GREATERTHAN_T:{if (!hasError) {
  8199.      
  8200.       jj_consume_token(GREATERTHAN_T);
  8201.       }
  8202.       if (!hasError) {
  8203.      
  8204. return ">=";
  8205.       }
  8206.      
  8207.       break;
  8208.       }
  8209.     case LESSTHAN_T:{if (!hasError) {
  8210.      
  8211.       jj_consume_token(LESSTHAN_T);
  8212.       }
  8213.       if (!hasError) {
  8214.      
  8215. return "<=";
  8216.       }
  8217.      
  8218.       break;
  8219.       }
  8220.     case NOTEQU_T:{if (!hasError) {
  8221.      
  8222.       jj_consume_token(NOTEQU_T);
  8223.       }
  8224.       if (!hasError) {
  8225.      
  8226. return "/=";
  8227.       }
  8228.      
  8229.       break;
  8230.       }
  8231.     default:
  8232.       jj_la1[186] = jj_gen;
  8233.       jj_consume_token(-1);
  8234.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  8235.     }
  8236. assert(false);
  8237. }
  8238.  
  8239.  
  8240. QCString VhdlParser::report_statement() {Token *t=0;Token *t1=0;QCString s,s1,s2;if (!hasError) {
  8241.    
  8242.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8243.     case BASIC_IDENTIFIER:
  8244.     case EXTENDED_CHARACTER:{if (!hasError) {
  8245.      
  8246.       s = identifier();
  8247.       }
  8248.       if (!hasError) {
  8249.      
  8250.       t = jj_consume_token(COLON_T);
  8251.       }
  8252.      
  8253.       break;
  8254.       }
  8255.     default:
  8256.       jj_la1[187] = jj_gen;
  8257.       ;
  8258.     }
  8259.     }
  8260.     if (!hasError) {
  8261.    
  8262.     jj_consume_token(REPORT_T);
  8263.     }
  8264.     if (!hasError) {
  8265.    
  8266.     s1 = expression();
  8267.     }
  8268.     if (!hasError) {
  8269.    
  8270.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8271.     case SEVERITY_T:{if (!hasError) {
  8272.      
  8273.       t1 = jj_consume_token(SEVERITY_T);
  8274.       }
  8275.       if (!hasError) {
  8276.      
  8277.       s2 = expression();
  8278.       }
  8279.      
  8280.       break;
  8281.       }
  8282.     default:
  8283.       jj_la1[188] = jj_gen;
  8284.       ;
  8285.     }
  8286.     }
  8287.     if (!hasError) {
  8288.    
  8289.     jj_consume_token(SEMI_T);
  8290.     }
  8291.    
  8292. if(t) s.append(":");
  8293.         s1.prepend(" report ");
  8294.         if(t1) s2.prepend(" severity ");
  8295.         return s+s1+s2+";";
  8296. assert(false);
  8297. }
  8298.  
  8299.  
  8300. QCString VhdlParser::return_statement() {QCString s,s1;if (!hasError) {
  8301.    
  8302.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8303.     case BASIC_IDENTIFIER:
  8304.     case EXTENDED_CHARACTER:{if (!hasError) {
  8305.      
  8306.       s = identifier();
  8307.       }
  8308.       if (!hasError) {
  8309.      
  8310.       jj_consume_token(COLON_T);
  8311.       }
  8312.       if (!hasError) {
  8313.      
  8314. s+=":";
  8315.       }
  8316.      
  8317.       break;
  8318.       }
  8319.     default:
  8320.       jj_la1[189] = jj_gen;
  8321.       ;
  8322.     }
  8323.     }
  8324.     if (!hasError) {
  8325.    
  8326.     jj_consume_token(RETURN_T);
  8327.     }
  8328.     if (!hasError) {
  8329.    
  8330.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8331.     case ABS_T:
  8332.     case NEW_T:
  8333.     case NOT_T:
  8334.     case NULL_T:
  8335.     case LPAREN_T:
  8336.     case PLUS_T:
  8337.     case MINUS_T:
  8338.     case SLSL_T:
  8339.     case INTEGER:
  8340.     case STRINGLITERAL:
  8341.     case BASIC_IDENTIFIER:
  8342.     case EXTENDED_CHARACTER:
  8343.     case CHARACTER_LITERAL:
  8344.     case DECIMAL_LITERAL:
  8345.     case BASED_LITERAL:
  8346.     case BIT_STRING_LITERAL:{if (!hasError) {
  8347.      
  8348.       s1 = expression();
  8349.       }
  8350.      
  8351.       break;
  8352.       }
  8353.     default:
  8354.       jj_la1[190] = jj_gen;
  8355.       ;
  8356.     }
  8357.     }
  8358.     if (!hasError) {
  8359.    
  8360.     jj_consume_token(SEMI_T);
  8361.     }
  8362.    
  8363. return s+" return "+s1+";";
  8364. assert(false);
  8365. }
  8366.  
  8367.  
  8368. QCString VhdlParser::scalar_type_definition() {QCString s,s1;
  8369.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8370.     case LPAREN_T:{if (!hasError) {
  8371.      
  8372.       s = enumeration_type_definition();
  8373.       }
  8374.       if (!hasError) {
  8375.      
  8376. return s;
  8377.       }
  8378.      
  8379.       break;
  8380.       }
  8381.     case RANGE_T:{if (!hasError) {
  8382.      
  8383.       s = range_constraint();
  8384.       }
  8385.       if (!hasError) {
  8386.      
  8387.       if (jj_2_74(2147483647)) {if (!hasError) {
  8388.        
  8389.         s1 = physical_type_definition();
  8390.         }
  8391.        
  8392.       } else {
  8393.         ;
  8394.       }
  8395.       }
  8396.       if (!hasError) {
  8397.      
  8398. return s+" "+s1+"%";
  8399.       }
  8400.      
  8401.       break;
  8402.       }
  8403.     default:
  8404.       jj_la1[191] = jj_gen;
  8405.       jj_consume_token(-1);
  8406.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  8407.     }
  8408. assert(false);
  8409. }
  8410.  
  8411.  
  8412. void VhdlParser::secondary_unit() {
  8413.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8414.     case ARCHITECTURE_T:{if (!hasError) {
  8415.      
  8416.       architecture_body();
  8417.       }
  8418.      
  8419.       break;
  8420.       }
  8421.     case PACKAGE_T:{if (!hasError) {
  8422.      
  8423.       package_body();
  8424.       }
  8425.      
  8426.       break;
  8427.       }
  8428.     default:
  8429.       jj_la1[192] = jj_gen;
  8430.       jj_consume_token(-1);
  8431.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  8432.     }
  8433. }
  8434.  
  8435.  
  8436. QCString VhdlParser::secondary_unit_declaration() {QCString s,s1;if (!hasError) {
  8437.    
  8438.     s = identifier();
  8439.     }
  8440.     if (!hasError) {
  8441.    
  8442.     jj_consume_token(EQU_T);
  8443.     }
  8444.     if (!hasError) {
  8445.    
  8446.     s1 = physical_literal();
  8447.     }
  8448.     if (!hasError) {
  8449.    
  8450.     jj_consume_token(SEMI_T);
  8451.     }
  8452.    
  8453. //printf("\n %s %s [%d]",s.data(),s1.data(),getLine());
  8454.   addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,s1.data(),Public);
  8455.  
  8456.   return s+"="+s1;
  8457. assert(false);
  8458. }
  8459.  
  8460.  
  8461. QCString VhdlParser::selected_name() {QCString s,s1;if (!hasError) {
  8462.    
  8463.     s = identifier();
  8464.     }
  8465.     if (!hasError) {
  8466.    
  8467.     jj_consume_token(DOT_T);
  8468.     }
  8469.     if (!hasError) {
  8470.    
  8471.     s1 = suffix();
  8472.     }
  8473.    
  8474. return s+"."+s1;
  8475. assert(false);
  8476. }
  8477.  
  8478.  
  8479. void VhdlParser::selected_signal_assignment() {if (!hasError) {
  8480.    
  8481.     jj_consume_token(WITH_T);
  8482.     }
  8483.     if (!hasError) {
  8484.    
  8485.     expression();
  8486.     }
  8487.     if (!hasError) {
  8488.    
  8489.     jj_consume_token(SELECT_T);
  8490.     }
  8491.     if (!hasError) {
  8492.    
  8493.     target();
  8494.     }
  8495.     if (!hasError) {
  8496.    
  8497.     jj_consume_token(LESSTHAN_T);
  8498.     }
  8499.     if (!hasError) {
  8500.    
  8501.     options();
  8502.     }
  8503.     if (!hasError) {
  8504.    
  8505.     selected_waveforms();
  8506.     }
  8507.     if (!hasError) {
  8508.    
  8509.     jj_consume_token(SEMI_T);
  8510.     }
  8511.    
  8512. }
  8513.  
  8514.  
  8515. void VhdlParser::selected_waveforms() {if (!hasError) {
  8516.    
  8517.     waveform();
  8518.     }
  8519.     if (!hasError) {
  8520.    
  8521.     jj_consume_token(WHEN_T);
  8522.     }
  8523.     if (!hasError) {
  8524.    
  8525.     choices();
  8526.     }
  8527.     if (!hasError) {
  8528.    
  8529.     while (!hasError) {
  8530.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8531.       case COMMA_T:{
  8532.         ;
  8533.         break;
  8534.         }
  8535.       default:
  8536.         jj_la1[193] = jj_gen;
  8537.         goto end_label_35;
  8538.       }if (!hasError) {
  8539.      
  8540.       jj_consume_token(COMMA_T);
  8541.       }
  8542.       if (!hasError) {
  8543.      
  8544.       waveform();
  8545.       }
  8546.       if (!hasError) {
  8547.      
  8548.       jj_consume_token(WHEN_T);
  8549.       }
  8550.       if (!hasError) {
  8551.      
  8552.       choices();
  8553.       }
  8554.      
  8555.     }
  8556.     end_label_35: ;
  8557.     }
  8558.    
  8559. }
  8560.  
  8561.  
  8562. QCString VhdlParser::sensitivity_clause() {QCString s;if (!hasError) {
  8563.    
  8564.     jj_consume_token(ON_T);
  8565.     }
  8566.     if (!hasError) {
  8567.    
  8568.     s = sensitivity_list();
  8569.     }
  8570.    
  8571. s.prepend(" on ");
  8572.   return s;
  8573. assert(false);
  8574. }
  8575.  
  8576.  
  8577. QCString VhdlParser::sensitivity_list() {QCString s,s1;if (!hasError) {
  8578.    
  8579.     s = name();
  8580.     }
  8581.     if (!hasError) {
  8582.    
  8583.     while (!hasError) {
  8584.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8585.       case COMMA_T:{
  8586.         ;
  8587.         break;
  8588.         }
  8589.       default:
  8590.         jj_la1[194] = jj_gen;
  8591.         goto end_label_36;
  8592.       }if (!hasError) {
  8593.      
  8594.       jj_consume_token(COMMA_T);
  8595.       }
  8596.       if (!hasError) {
  8597.      
  8598.       s1 = name();
  8599.       }
  8600.       if (!hasError) {
  8601.      
  8602. s+=",";s+=s1;
  8603.       }
  8604.      
  8605.     }
  8606.     end_label_36: ;
  8607.     }
  8608.    
  8609. return s;
  8610. assert(false);
  8611. }
  8612.  
  8613.  
  8614. QCString VhdlParser::sequence_of_statement() {QCString s,s1;if (!hasError) {
  8615.    
  8616.     while (!hasError) {
  8617.       if (jj_2_75(3)) {
  8618.         ;
  8619.       } else {
  8620.         goto end_label_37;
  8621.       }if (!hasError) {
  8622.      
  8623.       s1 = sequential_statement();
  8624.       }
  8625.       if (!hasError) {
  8626.      
  8627. s+=s1;
  8628.       }
  8629.      
  8630.     }
  8631.     end_label_37: ;
  8632.     }
  8633.    
  8634. return s;
  8635. assert(false);
  8636. }
  8637.  
  8638.  
  8639. QCString VhdlParser::sequential_statement() {QCString s;
  8640.     if (jj_2_76(2147483647)) {if (!hasError) {
  8641.      
  8642.       s = signal_assignment_statement();
  8643.       }
  8644.       if (!hasError) {
  8645.      
  8646. FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
  8647.       }
  8648.      
  8649.     } else if (jj_2_77(3)) {if (!hasError) {
  8650.      
  8651.       s = assertion_statement();
  8652.       }
  8653.       if (!hasError) {
  8654.      
  8655. FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
  8656.       }
  8657.      
  8658.     } else if (jj_2_78(3)) {if (!hasError) {
  8659.      
  8660.       s = report_statement();
  8661.       }
  8662.       if (!hasError) {
  8663.      
  8664. FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
  8665.       }
  8666.      
  8667.     } else if (jj_2_79(3)) {if (!hasError) {
  8668.      
  8669.       s = wait_statement();
  8670.       }
  8671.       if (!hasError) {
  8672.      
  8673. FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
  8674.       }
  8675.      
  8676.     } else if (jj_2_80(2147483647)) {if (!hasError) {
  8677.      
  8678.       s = variable_assignment_statement();
  8679.       }
  8680.       if (!hasError) {
  8681.      
  8682. FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
  8683.       }
  8684.      
  8685.     } else if (jj_2_81(3)) {if (!hasError) {
  8686.      
  8687.       s = procedure_call_statement();
  8688.       }
  8689.       if (!hasError) {
  8690.      
  8691. FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
  8692.       }
  8693.      
  8694.     } else if (jj_2_82(3)) {if (!hasError) {
  8695.      
  8696.       if_statement();
  8697.       }
  8698.       if (!hasError) {
  8699.      
  8700. return s;
  8701.       }
  8702.      
  8703.     } else if (jj_2_83(3)) {if (!hasError) {
  8704.      
  8705.       case_statement();
  8706.       }
  8707.       if (!hasError) {
  8708.      
  8709. return s;
  8710.       }
  8711.      
  8712.     } else if (jj_2_84(3)) {if (!hasError) {
  8713.      
  8714.       loop_statement();
  8715.       }
  8716.       if (!hasError) {
  8717.      
  8718. return s;
  8719.       }
  8720.      
  8721.     } else if (jj_2_85(3)) {if (!hasError) {
  8722.      
  8723.       s = next_statement();
  8724.       }
  8725.       if (!hasError) {
  8726.      
  8727. return s;
  8728.       }
  8729.      
  8730.     } else if (jj_2_86(3)) {if (!hasError) {
  8731.      
  8732.       s = exit_statement();
  8733.       }
  8734.       if (!hasError) {
  8735.      
  8736. return s;
  8737.       }
  8738.      
  8739.     } else if (jj_2_87(3)) {if (!hasError) {
  8740.      
  8741.       s = return_statement();
  8742.       }
  8743.       if (!hasError) {
  8744.      
  8745. FlowChart::addFlowChart(FlowChart::RETURN_NO,s.data(),0);return s;
  8746.       }
  8747.      
  8748.     } else {
  8749.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8750.       case NULL_T:
  8751.       case BASIC_IDENTIFIER:
  8752.       case EXTENDED_CHARACTER:{if (!hasError) {
  8753.        
  8754.         s = null_statement();
  8755.         }
  8756.         if (!hasError) {
  8757.        
  8758. FlowChart::addFlowChart(FlowChart::TEXT_NO,s.data(),0);return s;
  8759.         }
  8760.        
  8761.         break;
  8762.         }
  8763.       default:
  8764.         jj_la1[195] = jj_gen;
  8765.         jj_consume_token(-1);
  8766.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  8767.       }
  8768.     }
  8769. assert(false);
  8770. }
  8771.  
  8772.  
  8773. QCString VhdlParser::shift_expression() {QCString s,s1,s2;if (!hasError) {
  8774.    
  8775.     s = simple_expression();
  8776.     }
  8777.     if (!hasError) {
  8778.    
  8779.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8780.     case ROL_T:
  8781.     case ROR_T:
  8782.     case SLA_T:
  8783.     case SLL_T:
  8784.     case SRA_T:
  8785.     case SRL_T:{if (!hasError) {
  8786.      
  8787.       s1 = shift_operator();
  8788.       }
  8789.       if (!hasError) {
  8790.      
  8791.       s2 = simple_expression();
  8792.       }
  8793.      
  8794.       break;
  8795.       }
  8796.     default:
  8797.       jj_la1[196] = jj_gen;
  8798.       ;
  8799.     }
  8800.     }
  8801.    
  8802. return s+s1+s2;
  8803. assert(false);
  8804. }
  8805.  
  8806.  
  8807. QCString VhdlParser::shift_operator() {
  8808.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8809.     case SLL_T:{if (!hasError) {
  8810.      
  8811.       jj_consume_token(SLL_T);
  8812.       }
  8813.       if (!hasError) {
  8814.      
  8815. return "sll";
  8816.       }
  8817.      
  8818.       break;
  8819.       }
  8820.     case SRL_T:{if (!hasError) {
  8821.      
  8822.       jj_consume_token(SRL_T);
  8823.       }
  8824.       if (!hasError) {
  8825.      
  8826. return "srl";
  8827.       }
  8828.      
  8829.       break;
  8830.       }
  8831.     case SLA_T:{if (!hasError) {
  8832.      
  8833.       jj_consume_token(SLA_T);
  8834.       }
  8835.       if (!hasError) {
  8836.      
  8837. return "sla";
  8838.       }
  8839.      
  8840.       break;
  8841.       }
  8842.     case SRA_T:{if (!hasError) {
  8843.      
  8844.       jj_consume_token(SRA_T);
  8845.       }
  8846.       if (!hasError) {
  8847.      
  8848. return "sra";
  8849.       }
  8850.      
  8851.       break;
  8852.       }
  8853.     case ROL_T:{if (!hasError) {
  8854.      
  8855.       jj_consume_token(ROL_T);
  8856.       }
  8857.       if (!hasError) {
  8858.      
  8859. return "rol";
  8860.       }
  8861.      
  8862.       break;
  8863.       }
  8864.     case ROR_T:{if (!hasError) {
  8865.      
  8866.       jj_consume_token(ROR_T);
  8867.       }
  8868.       if (!hasError) {
  8869.      
  8870. return "ror";
  8871.       }
  8872.      
  8873.       break;
  8874.       }
  8875.     default:
  8876.       jj_la1[197] = jj_gen;
  8877.       jj_consume_token(-1);
  8878.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  8879.     }
  8880. assert(false);
  8881. }
  8882.  
  8883.  
  8884. QCString VhdlParser::sign() {
  8885.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8886.     case PLUS_T:{if (!hasError) {
  8887.      
  8888.       jj_consume_token(PLUS_T);
  8889.       }
  8890.       if (!hasError) {
  8891.      
  8892. return "+";
  8893.       }
  8894.      
  8895.       break;
  8896.       }
  8897.     case MINUS_T:{if (!hasError) {
  8898.      
  8899.       jj_consume_token(MINUS_T);
  8900.       }
  8901.       if (!hasError) {
  8902.      
  8903. return "-";
  8904.       }
  8905.      
  8906.       break;
  8907.       }
  8908.     default:
  8909.       jj_la1[198] = jj_gen;
  8910.       jj_consume_token(-1);
  8911.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  8912.     }
  8913. assert(false);
  8914. }
  8915.  
  8916.  
  8917. QCString VhdlParser::signal_assignment_statement() {QCString s,s1,s2,s3;
  8918.     if (jj_2_89(2147483647)) {if (!hasError) {
  8919.      
  8920.       conditional_signal_assignment_wave();
  8921.       }
  8922.       if (!hasError) {
  8923.      
  8924. return "";
  8925.       }
  8926.      
  8927.     } else if (jj_2_90(2147483647)) {if (!hasError) {
  8928.      
  8929.       selected_signal_assignment_wave();
  8930.       }
  8931.       if (!hasError) {
  8932.      
  8933. return "";
  8934.       }
  8935.      
  8936.     } else {
  8937.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8938.       case LPAREN_T:
  8939.       case SLSL_T:
  8940.       case STRINGLITERAL:
  8941.       case BASIC_IDENTIFIER:
  8942.       case EXTENDED_CHARACTER:{if (!hasError) {
  8943.        
  8944.         if (jj_2_88(2)) {if (!hasError) {
  8945.          
  8946.           s = identifier();
  8947.           }
  8948.           if (!hasError) {
  8949.          
  8950.           jj_consume_token(COLON_T);
  8951.           }
  8952.           if (!hasError) {
  8953.          
  8954. s+=":";
  8955.           }
  8956.          
  8957.         } else {
  8958.           ;
  8959.         }
  8960.         }
  8961.         if (!hasError) {
  8962.        
  8963.         s1 = target();
  8964.         }
  8965.         if (!hasError) {
  8966.        
  8967.         jj_consume_token(LESSTHAN_T);
  8968.         }
  8969.         if (!hasError) {
  8970.        
  8971.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  8972.         case INERTIAL_T:
  8973.         case REJECT_T:
  8974.         case TRANSPORT_T:{if (!hasError) {
  8975.          
  8976.           s2 = delay_mechanism();
  8977.           }
  8978.          
  8979.           break;
  8980.           }
  8981.         default:
  8982.           jj_la1[199] = jj_gen;
  8983.           ;
  8984.         }
  8985.         }
  8986.         if (!hasError) {
  8987.        
  8988.         s3 = waveform();
  8989.         }
  8990.         if (!hasError) {
  8991.        
  8992.         jj_consume_token(SEMI_T);
  8993.         }
  8994.         if (!hasError) {
  8995.        
  8996. return s+s1+"<="+s2+s3+";";
  8997.         }
  8998.        
  8999.         break;
  9000.         }
  9001.       default:
  9002.         jj_la1[200] = jj_gen;
  9003.         jj_consume_token(-1);
  9004.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  9005.       }
  9006.     }
  9007. assert(false);
  9008. }
  9009.  
  9010.  
  9011. void VhdlParser::semi() {if (!hasError) {
  9012.    
  9013.     jj_consume_token(SEMI_T);
  9014.     }
  9015.    
  9016. }
  9017.  
  9018.  
  9019. void VhdlParser::signal_declaration() {Token* tok=0;QCString s,s1,s2,s3,s4;if (!hasError) {
  9020.    
  9021.     jj_consume_token(SIGNAL_T);
  9022.     }
  9023.     if (!hasError) {
  9024.    
  9025.     s = identifier_list();
  9026.     }
  9027.     if (!hasError) {
  9028.    
  9029.     jj_consume_token(COLON_T);
  9030.     }
  9031.     if (!hasError) {
  9032.    
  9033.     s1 = subtype_indication();
  9034.     }
  9035.     if (!hasError) {
  9036.    
  9037.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9038.     case BUS_T:
  9039.     case REGISTER_T:{if (!hasError) {
  9040.      
  9041.       s2 = signal_kind();
  9042.       }
  9043.      
  9044.       break;
  9045.       }
  9046.     default:
  9047.       jj_la1[201] = jj_gen;
  9048.       ;
  9049.     }
  9050.     }
  9051.     if (!hasError) {
  9052.    
  9053.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9054.     case VARASSIGN_T:{if (!hasError) {
  9055.      
  9056.       tok = jj_consume_token(VARASSIGN_T);
  9057.       }
  9058.       if (!hasError) {
  9059.      
  9060.       s3 = expression();
  9061.       }
  9062.      
  9063.       break;
  9064.       }
  9065.     default:
  9066.       jj_la1[202] = jj_gen;
  9067.       ;
  9068.     }
  9069.     }
  9070.     if (!hasError) {
  9071.    
  9072.     jj_consume_token(SEMI_T);
  9073.     }
  9074.    
  9075. if(tok)
  9076.       s3.prepend(":=");
  9077.      s4=s1+s2+s3;
  9078.      addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SIGNAL,0,s4.data(),Public);
  9079. }
  9080.  
  9081.  
  9082. QCString VhdlParser::signal_kind() {
  9083.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9084.     case REGISTER_T:{if (!hasError) {
  9085.      
  9086.       jj_consume_token(REGISTER_T);
  9087.       }
  9088.       if (!hasError) {
  9089.      
  9090. return "register";
  9091.       }
  9092.      
  9093.       break;
  9094.       }
  9095.     case BUS_T:{if (!hasError) {
  9096.      
  9097.       jj_consume_token(BUS_T);
  9098.       }
  9099.       if (!hasError) {
  9100.      
  9101. return "bus";
  9102.       }
  9103.      
  9104.       break;
  9105.       }
  9106.     default:
  9107.       jj_la1[203] = jj_gen;
  9108.       jj_consume_token(-1);
  9109.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  9110.     }
  9111. assert(false);
  9112. }
  9113.  
  9114.  
  9115. QCString VhdlParser::signal_list() {QCString s,s1;
  9116.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9117.     case SLSL_T:
  9118.     case STRINGLITERAL:
  9119.     case BASIC_IDENTIFIER:
  9120.     case EXTENDED_CHARACTER:{if (!hasError) {
  9121.      
  9122.       s = name();
  9123.       }
  9124.       if (!hasError) {
  9125.      
  9126.       while (!hasError) {
  9127.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9128.         case COMMA_T:{
  9129.           ;
  9130.           break;
  9131.           }
  9132.         default:
  9133.           jj_la1[204] = jj_gen;
  9134.           goto end_label_38;
  9135.         }if (!hasError) {
  9136.        
  9137.         jj_consume_token(COMMA_T);
  9138.         }
  9139.         if (!hasError) {
  9140.        
  9141.         s1 = name();
  9142.         }
  9143.         if (!hasError) {
  9144.        
  9145. s+=",";s+=s1;
  9146.         }
  9147.        
  9148.       }
  9149.       end_label_38: ;
  9150.       }
  9151.      
  9152.       break;
  9153.       }
  9154.     case OTHER_T:{if (!hasError) {
  9155.      
  9156.       jj_consume_token(OTHER_T);
  9157.       }
  9158.       if (!hasError) {
  9159.      
  9160. return "other";
  9161.       }
  9162.      
  9163.       break;
  9164.       }
  9165.     case ALL_T:{if (!hasError) {
  9166.      
  9167.       jj_consume_token(ALL_T);
  9168.       }
  9169.       if (!hasError) {
  9170.      
  9171. return "all";
  9172.       }
  9173.      
  9174.       break;
  9175.       }
  9176.     default:
  9177.       jj_la1[205] = jj_gen;
  9178.       jj_consume_token(-1);
  9179.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  9180.     }
  9181. assert(false);
  9182. }
  9183.  
  9184.  
  9185. QCString VhdlParser::signature() {QCString s,s1,s2;if (!hasError) {
  9186.    
  9187.     jj_consume_token(LBRACKET_T);
  9188.     }
  9189.     if (!hasError) {
  9190.    
  9191.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9192.     case SLSL_T:
  9193.     case STRINGLITERAL:
  9194.     case BASIC_IDENTIFIER:
  9195.     case EXTENDED_CHARACTER:{if (!hasError) {
  9196.      
  9197.       s = name();
  9198.       }
  9199.       if (!hasError) {
  9200.      
  9201.       while (!hasError) {
  9202.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9203.         case COMMA_T:{
  9204.           ;
  9205.           break;
  9206.           }
  9207.         default:
  9208.           jj_la1[206] = jj_gen;
  9209.           goto end_label_39;
  9210.         }if (!hasError) {
  9211.        
  9212.         jj_consume_token(COMMA_T);
  9213.         }
  9214.         if (!hasError) {
  9215.        
  9216.         s1 = name();
  9217.         }
  9218.         if (!hasError) {
  9219.        
  9220. s+=",";s+=s1;
  9221.         }
  9222.        
  9223.       }
  9224.       end_label_39: ;
  9225.       }
  9226.      
  9227.       break;
  9228.       }
  9229.     default:
  9230.       jj_la1[207] = jj_gen;
  9231.       ;
  9232.     }
  9233.     }
  9234.     if (!hasError) {
  9235.    
  9236.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9237.     case RETURN_T:{if (!hasError) {
  9238.      
  9239.       jj_consume_token(RETURN_T);
  9240.       }
  9241.       if (!hasError) {
  9242.      
  9243.       s1 = name();
  9244.       }
  9245.       if (!hasError) {
  9246.      
  9247. s+="return ";s+=s1;
  9248.       }
  9249.      
  9250.       break;
  9251.       }
  9252.     default:
  9253.       jj_la1[208] = jj_gen;
  9254.       ;
  9255.     }
  9256.     }
  9257.     if (!hasError) {
  9258.    
  9259.     jj_consume_token(RBRACKET_T);
  9260.     }
  9261.    
  9262. s1="["+s+"]";return s1;
  9263. assert(false);
  9264. }
  9265.  
  9266.  
  9267. QCString VhdlParser::simple_expression() {QCString s,s1,s2;if (!hasError) {
  9268.    
  9269.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9270.     case PLUS_T:
  9271.     case MINUS_T:{if (!hasError) {
  9272.      
  9273.       s = sign();
  9274.       }
  9275.      
  9276.       break;
  9277.       }
  9278.     default:
  9279.       jj_la1[209] = jj_gen;
  9280.       ;
  9281.     }
  9282.     }
  9283.     if (!hasError) {
  9284.    
  9285.     s1 = term();
  9286.     }
  9287.     if (!hasError) {
  9288.    
  9289. s+=s1;
  9290.     }
  9291.     if (!hasError) {
  9292.    
  9293.     while (!hasError) {
  9294.       if (jj_2_91(2147483647)) {
  9295.         ;
  9296.       } else {
  9297.         goto end_label_40;
  9298.       }if (!hasError) {
  9299.      
  9300.       s1 = adding_operator();
  9301.       }
  9302.       if (!hasError) {
  9303.      
  9304.       s2 = term();
  9305.       }
  9306.       if (!hasError) {
  9307.      
  9308. s+=s1;s+=s2;
  9309.       }
  9310.      
  9311.     }
  9312.     end_label_40: ;
  9313.     }
  9314.    
  9315. return s;
  9316. assert(false);
  9317. }
  9318.  
  9319.  
  9320. void VhdlParser::simple_name() {if (!hasError) {
  9321.    
  9322.     name();
  9323.     }
  9324.    
  9325. }
  9326.  
  9327.  
  9328. QCString VhdlParser::slice_name() {QCString s,s1;if (!hasError) {
  9329.    
  9330.     s = identifier();
  9331.     }
  9332.     if (!hasError) {
  9333.    
  9334.     jj_consume_token(LPAREN_T);
  9335.     }
  9336.     if (!hasError) {
  9337.    
  9338.     s1 = discrete_range();
  9339.     }
  9340.     if (!hasError) {
  9341.    
  9342.     jj_consume_token(RPAREN_T);
  9343.     }
  9344.    
  9345. return s+"("+s1+")";
  9346. assert(false);
  9347. }
  9348.  
  9349.  
  9350. QCString VhdlParser::string_literal() {Token *tok=0;if (!hasError) {
  9351.    
  9352.     tok = jj_consume_token(STRINGLITERAL);
  9353.     }
  9354.    
  9355. return tok->image.c_str();
  9356. assert(false);
  9357. }
  9358.  
  9359.  
  9360. void VhdlParser::subprogram_body() {QCString s;if (!hasError) {
  9361.    
  9362.     jj_consume_token(IS_T);
  9363.     }
  9364.     if (!hasError) {
  9365.    
  9366.     //try{
  9367.      s = subprogram_declarative_part();
  9368.     }
  9369.     if (!hasError) {
  9370.    
  9371. if (s.data())
  9372.       {
  9373.         FlowChart::addFlowChart(FlowChart::VARIABLE_NO,s,0);
  9374.       }
  9375.       FlowChart::addFlowChart(FlowChart::BEGIN_NO,"BEGIN",0);
  9376.     }
  9377.     if (!hasError) {
  9378.    
  9379.     jj_consume_token(BEGIN_T);
  9380.     }
  9381.     if (!hasError) {
  9382.    
  9383.     subprogram_statement_part();
  9384.     }
  9385.     if (!hasError) {
  9386.    
  9387.     jj_consume_token(END_T);
  9388.     }
  9389.     if (!hasError) {
  9390.    
  9391.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9392.     case FUNCTION_T:
  9393.     case PROCEDURE_T:{if (!hasError) {
  9394.      
  9395.       subprogram_kind();
  9396.       }
  9397.      
  9398.       break;
  9399.       }
  9400.     default:
  9401.       jj_la1[210] = jj_gen;
  9402.       ;
  9403.     }
  9404.     }
  9405.     if (!hasError) {
  9406.    
  9407.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9408.     case STRINGLITERAL:
  9409.     case BASIC_IDENTIFIER:
  9410.     case EXTENDED_CHARACTER:{if (!hasError) {
  9411.      
  9412.       designator();
  9413.       }
  9414.      
  9415.       break;
  9416.       }
  9417.     default:
  9418.       jj_la1[211] = jj_gen;
  9419.       ;
  9420.     }
  9421.     }
  9422.     if (!hasError) {
  9423.    
  9424.     jj_consume_token(SEMI_T);
  9425.     }
  9426.    
  9427. tempEntry->endBodyLine=getLine(END_T);
  9428.       createFlow();
  9429.       currP=0;
  9430. }
  9431.  
  9432.  
  9433. void VhdlParser::subprogram_declaration() {
  9434.     if (jj_2_92(2147483647)) {if (!hasError) {
  9435.      
  9436.       subprogram_instantiation_declaration();
  9437.       }
  9438.      
  9439.     } else {
  9440.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9441.       case FUNCTION_T:
  9442.       case IMPURE_T:
  9443.       case PROCEDURE_T:
  9444.       case PURE_T:{if (!hasError) {
  9445.        
  9446.         subprogram_specification();
  9447.         }
  9448.         if (!hasError) {
  9449.        
  9450.         subprogram_1();
  9451.         }
  9452.         if (!hasError) {
  9453.        
  9454. currP=0;
  9455.         }
  9456.        
  9457.         break;
  9458.         }
  9459.       default:
  9460.         jj_la1[212] = jj_gen;
  9461.         jj_consume_token(-1);
  9462.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  9463.       }
  9464.     }
  9465. }
  9466.  
  9467.  
  9468. void VhdlParser::subprogram_1() {
  9469.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9470.     case IS_T:{if (!hasError) {
  9471.      
  9472.       subprogram_body();
  9473.       }
  9474.      
  9475.       break;
  9476.       }
  9477.     case SEMI_T:{if (!hasError) {
  9478.      
  9479.       jj_consume_token(SEMI_T);
  9480.       }
  9481.      
  9482.       break;
  9483.       }
  9484.     default:
  9485.       jj_la1[213] = jj_gen;
  9486.       jj_consume_token(-1);
  9487.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  9488.     }
  9489. }
  9490.  
  9491.  
  9492. QCString VhdlParser::subprogram_declarative_item() {QCString s;
  9493.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9494.     case FUNCTION_T:
  9495.     case IMPURE_T:
  9496.     case PROCEDURE_T:
  9497.     case PURE_T:{if (!hasError) {
  9498.      
  9499.       subprogram_declaration();
  9500.       }
  9501.       if (!hasError) {
  9502.      
  9503. return "";
  9504.       }
  9505.      
  9506.       break;
  9507.       }
  9508.     case TYPE_T:{if (!hasError) {
  9509.      
  9510.       s = type_declaration();
  9511.       }
  9512.       if (!hasError) {
  9513.      
  9514. return s;
  9515.       }
  9516.      
  9517.       break;
  9518.       }
  9519.     case IS_T:{if (!hasError) {
  9520.      
  9521.       subprogram_body();
  9522.       }
  9523.       if (!hasError) {
  9524.      
  9525. return "";
  9526.       }
  9527.      
  9528.       break;
  9529.       }
  9530.     case SUBTYPE_T:{if (!hasError) {
  9531.      
  9532.       s = subtype_declaration();
  9533.       }
  9534.       if (!hasError) {
  9535.      
  9536. return s;
  9537.       }
  9538.      
  9539.       break;
  9540.       }
  9541.     case CONSTANT_T:{if (!hasError) {
  9542.      
  9543.       s = constant_declaration();
  9544.       }
  9545.       if (!hasError) {
  9546.      
  9547. return s;
  9548.       }
  9549.      
  9550.       break;
  9551.       }
  9552.     case SHARED_T:
  9553.     case VARIABLE_T:{if (!hasError) {
  9554.      
  9555.       s = variable_declaration();
  9556.       }
  9557.       if (!hasError) {
  9558.      
  9559. return s;
  9560.       }
  9561.      
  9562.       break;
  9563.       }
  9564.     case FILE_T:{if (!hasError) {
  9565.      
  9566.       s = file_declaration();
  9567.       }
  9568.       if (!hasError) {
  9569.      
  9570. return s;
  9571.       }
  9572.      
  9573.       break;
  9574.       }
  9575.     case ALIAS_T:{if (!hasError) {
  9576.      
  9577.       s = alias_declaration();
  9578.       }
  9579.       if (!hasError) {
  9580.      
  9581. return s;
  9582.       }
  9583.      
  9584.       break;
  9585.       }
  9586.     default:
  9587.       jj_la1[214] = jj_gen;
  9588.       if (jj_2_93(2147483647)) {if (!hasError) {
  9589.        
  9590.         s = attribute_declaration();
  9591.         }
  9592.         if (!hasError) {
  9593.        
  9594. return s;
  9595.         }
  9596.        
  9597.       } else {
  9598.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9599.         case ATTRIBUTE_T:{if (!hasError) {
  9600.          
  9601.           s = attribute_specification();
  9602.           }
  9603.           if (!hasError) {
  9604.          
  9605. return s;
  9606.           }
  9607.          
  9608.           break;
  9609.           }
  9610.         case USE_T:{if (!hasError) {
  9611.          
  9612.           s = use_clause();
  9613.           }
  9614.           if (!hasError) {
  9615.          
  9616. return s;
  9617.           }
  9618.          
  9619.           break;
  9620.           }
  9621.         default:
  9622.           jj_la1[215] = jj_gen;
  9623.           if (jj_2_94(3)) {if (!hasError) {
  9624.            
  9625.             s = group_template_declaration();
  9626.             }
  9627.             if (!hasError) {
  9628.            
  9629. return s;
  9630.             }
  9631.            
  9632.           } else {
  9633.             switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9634.             case GROUP_T:{if (!hasError) {
  9635.              
  9636.               s = group_declaration();
  9637.               }
  9638.               if (!hasError) {
  9639.              
  9640. return s;
  9641.               }
  9642.              
  9643.               break;
  9644.               }
  9645.             default:
  9646.               jj_la1[216] = jj_gen;
  9647.               jj_consume_token(-1);
  9648.               errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  9649.             }
  9650.           }
  9651.         }
  9652.       }
  9653.     }
  9654. assert(false);
  9655. }
  9656.  
  9657.  
  9658. QCString VhdlParser::subprogram_declarative_part() {QCString s,s1;if (!hasError) {
  9659.    
  9660.     while (!hasError) {
  9661.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9662.       case ALIAS_T:
  9663.       case ATTRIBUTE_T:
  9664.       case CONSTANT_T:
  9665.       case FILE_T:
  9666.       case FUNCTION_T:
  9667.       case GROUP_T:
  9668.       case IMPURE_T:
  9669.       case IS_T:
  9670.       case PROCEDURE_T:
  9671.       case PURE_T:
  9672.       case SHARED_T:
  9673.       case SUBTYPE_T:
  9674.       case TYPE_T:
  9675.       case USE_T:
  9676.       case VARIABLE_T:{
  9677.         ;
  9678.         break;
  9679.         }
  9680.       default:
  9681.         jj_la1[217] = jj_gen;
  9682.         goto end_label_41;
  9683.       }if (!hasError) {
  9684.      
  9685.       s1 = subprogram_declarative_item();
  9686.       }
  9687.       if (!hasError) {
  9688.      
  9689. s+=s1;
  9690.       }
  9691.      
  9692.     }
  9693.     end_label_41: ;
  9694.     }
  9695.    
  9696. return s;
  9697. assert(false);
  9698. }
  9699.  
  9700.  
  9701. void VhdlParser::subprogram_kind() {
  9702.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9703.     case FUNCTION_T:{if (!hasError) {
  9704.      
  9705.       jj_consume_token(FUNCTION_T);
  9706.       }
  9707.      
  9708.       break;
  9709.       }
  9710.     case PROCEDURE_T:{if (!hasError) {
  9711.      
  9712.       jj_consume_token(PROCEDURE_T);
  9713.       }
  9714.      
  9715.       break;
  9716.       }
  9717.     default:
  9718.       jj_la1[218] = jj_gen;
  9719.       jj_consume_token(-1);
  9720.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  9721.     }
  9722. }
  9723.  
  9724.  
  9725. void VhdlParser::subprogram_specification() {QCString s;Token *tok=0;Token *t;
  9726.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9727.     case PROCEDURE_T:{if (!hasError) {
  9728.      
  9729.       jj_consume_token(PROCEDURE_T);
  9730.       }
  9731.       if (!hasError) {
  9732.      
  9733.       s = designator();
  9734.       }
  9735.       if (!hasError) {
  9736.      
  9737. currP=VhdlDocGen::PROCEDURE;
  9738.               createFunction(s.data(),currP,0);
  9739.               tempEntry=current;
  9740.                current->startLine=getLine(PROCEDURE_T);
  9741.                current->bodyLine=getLine(PROCEDURE_T);
  9742.       }
  9743.       if (!hasError) {
  9744.      
  9745.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9746.       case LPAREN_T:{if (!hasError) {
  9747.        
  9748.         jj_consume_token(LPAREN_T);
  9749.         }
  9750.         if (!hasError) {
  9751.        
  9752. param_sec=PARAM_SEC;
  9753.         }
  9754.         if (!hasError) {
  9755.        
  9756.         interface_list();
  9757.         }
  9758.         if (!hasError) {
  9759.        
  9760. param_sec=0;
  9761.         }
  9762.         if (!hasError) {
  9763.        
  9764.         jj_consume_token(RPAREN_T);
  9765.         }
  9766.        
  9767.         break;
  9768.         }
  9769.       default:
  9770.         jj_la1[219] = jj_gen;
  9771.         ;
  9772.       }
  9773.       }
  9774.       if (!hasError) {
  9775.      
  9776.       if (jj_2_95(2)) {if (!hasError) {
  9777.        
  9778.         gen_interface_list();
  9779.         }
  9780.        
  9781.       } else {
  9782.         ;
  9783.       }
  9784.       }
  9785.       if (!hasError) {
  9786.      
  9787.       if (jj_2_96(2)) {if (!hasError) {
  9788.        
  9789.         gen_assoc_list();
  9790.         }
  9791.        
  9792.       } else {
  9793.         ;
  9794.       }
  9795.       }
  9796.       if (!hasError) {
  9797.      
  9798.       param();
  9799.       }
  9800.       if (!hasError) {
  9801.      
  9802. newEntry();
  9803.       }
  9804.      
  9805.       break;
  9806.       }
  9807.     case FUNCTION_T:
  9808.     case IMPURE_T:
  9809.     case PURE_T:{if (!hasError) {
  9810.      
  9811.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9812.       case IMPURE_T:
  9813.       case PURE_T:{if (!hasError) {
  9814.        
  9815.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9816.         case PURE_T:{if (!hasError) {
  9817.          
  9818.           tok = jj_consume_token(PURE_T);
  9819.           }
  9820.          
  9821.           break;
  9822.           }
  9823.         case IMPURE_T:{if (!hasError) {
  9824.          
  9825.           tok = jj_consume_token(IMPURE_T);
  9826.           }
  9827.          
  9828.           break;
  9829.           }
  9830.         default:
  9831.           jj_la1[220] = jj_gen;
  9832.           jj_consume_token(-1);
  9833.           errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  9834.         }
  9835.         }
  9836.        
  9837.         break;
  9838.         }
  9839.       default:
  9840.         jj_la1[221] = jj_gen;
  9841.         ;
  9842.       }
  9843.       }
  9844.       if (!hasError) {
  9845.      
  9846.       t = jj_consume_token(FUNCTION_T);
  9847.       }
  9848.       if (!hasError) {
  9849.      
  9850.       s = designator();
  9851.       }
  9852.       if (!hasError) {
  9853.      
  9854. currP=VhdlDocGen::FUNCTION;
  9855.      if(tok)
  9856.      createFunction(tok->image.c_str(),currP,s.data());
  9857.      else
  9858.      createFunction(0,currP,s.data());
  9859.       tempEntry=current;
  9860.       current->startLine=getLine(FUNCTION_T);
  9861.       current->bodyLine=getLine(FUNCTION_T);
  9862.       }
  9863.       if (!hasError) {
  9864.      
  9865.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9866.       case LPAREN_T:{if (!hasError) {
  9867.        
  9868. param_sec=PARAM_SEC;
  9869.         }
  9870.         if (!hasError) {
  9871.        
  9872.         jj_consume_token(LPAREN_T);
  9873.         }
  9874.         if (!hasError) {
  9875.        
  9876.         formal_parameter_list();
  9877.         }
  9878.         if (!hasError) {
  9879.        
  9880.         jj_consume_token(RPAREN_T);
  9881.         }
  9882.         if (!hasError) {
  9883.        
  9884. param_sec=0;
  9885.         }
  9886.        
  9887.         break;
  9888.         }
  9889.       default:
  9890.         jj_la1[222] = jj_gen;
  9891.         ;
  9892.       }
  9893.       }
  9894.       if (!hasError) {
  9895.      
  9896.       jj_consume_token(RETURN_T);
  9897.       }
  9898.       if (!hasError) {
  9899.      
  9900.       s = type_mark();
  9901.       }
  9902.       if (!hasError) {
  9903.      
  9904. tempEntry=current;
  9905.                 current->type=s;
  9906.                 newEntry();
  9907.       }
  9908.      
  9909.       break;
  9910.       }
  9911.     default:
  9912.       jj_la1[223] = jj_gen;
  9913.       jj_consume_token(-1);
  9914.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  9915.     }
  9916. }
  9917.  
  9918.  
  9919. void VhdlParser::subprogram_statement_part() {if (!hasError) {
  9920.    
  9921.     while (!hasError) {
  9922.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  9923.       case ASSERT_T:
  9924.       case CASE_T:
  9925.       case EXIT_T:
  9926.       case FOR_T:
  9927.       case IF_T:
  9928.       case LOOP_T:
  9929.       case NEXT_T:
  9930.       case NULL_T:
  9931.       case REPORT_T:
  9932.       case RETURN_T:
  9933.       case WAIT_T:
  9934.       case WHILE_T:
  9935.       case WITH_T:
  9936.       case LPAREN_T:
  9937.       case SLSL_T:
  9938.       case STRINGLITERAL:
  9939.       case BASIC_IDENTIFIER:
  9940.       case EXTENDED_CHARACTER:{
  9941.         ;
  9942.         break;
  9943.         }
  9944.       default:
  9945.         jj_la1[224] = jj_gen;
  9946.         goto end_label_42;
  9947.       }if (!hasError) {
  9948.      
  9949.       sequential_statement();
  9950.       }
  9951.      
  9952.     }
  9953.     end_label_42: ;
  9954.     }
  9955.    
  9956. }
  9957.  
  9958.  
  9959. QCString VhdlParser::subtype_declaration() {QCString s,s1;if (!hasError) {
  9960.    
  9961.     jj_consume_token(SUBTYPE_T);
  9962.     }
  9963.     if (!hasError) {
  9964.    
  9965.     s = identifier();
  9966.     }
  9967.     if (!hasError) {
  9968.    
  9969.     jj_consume_token(IS_T);
  9970.     }
  9971.     if (!hasError) {
  9972.    
  9973.     s1 = subtype_indication();
  9974.     }
  9975.     if (!hasError) {
  9976.    
  9977.     jj_consume_token(SEMI_T);
  9978.     }
  9979.    
  9980. addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::SUBTYPE,0,s1.data(),Public);
  9981.   return " subtype "+s+" is "+s1+";";
  9982. assert(false);
  9983. }
  9984.  
  9985.  
  9986. QCString VhdlParser::subtype_indication() {QCString s,s1,s2;if (!hasError) {
  9987.    
  9988.     s = name();
  9989.     }
  9990.     if (!hasError) {
  9991.    
  9992.     if (jj_2_97(2147483647)) {if (!hasError) {
  9993.      
  9994.       s1 = name();
  9995.       }
  9996.      
  9997.     } else {
  9998.       ;
  9999.     }
  10000.     }
  10001.     if (!hasError) {
  10002.    
  10003.     if (jj_2_98(2147483647)) {if (!hasError) {
  10004.      
  10005.       s2 = constraint();
  10006.       }
  10007.      
  10008.     } else {
  10009.       ;
  10010.     }
  10011.     }
  10012.    
  10013. return s+" "+s1+" "+s2;
  10014. assert(false);
  10015. }
  10016.  
  10017.  
  10018. QCString VhdlParser::suffix() {QCString s;
  10019.     if (jj_2_99(2147483647)) {if (!hasError) {
  10020.      
  10021.       s = name();
  10022.       }
  10023.       if (!hasError) {
  10024.      
  10025. return s;
  10026.       }
  10027.      
  10028.     } else {
  10029.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10030.       case CHARACTER_LITERAL:{if (!hasError) {
  10031.        
  10032.         s = character_literal();
  10033.         }
  10034.         if (!hasError) {
  10035.        
  10036. return s;
  10037.         }
  10038.        
  10039.         break;
  10040.         }
  10041.       case STRINGLITERAL:{if (!hasError) {
  10042.        
  10043.         s = operator_symbol();
  10044.         }
  10045.         if (!hasError) {
  10046.        
  10047. return s;
  10048.         }
  10049.        
  10050.         break;
  10051.         }
  10052.       case ALL_T:{if (!hasError) {
  10053.        
  10054.         jj_consume_token(ALL_T);
  10055.         }
  10056.         if (!hasError) {
  10057.        
  10058. return " all ";
  10059.         }
  10060.        
  10061.         break;
  10062.         }
  10063.       default:
  10064.         jj_la1[225] = jj_gen;
  10065.         jj_consume_token(-1);
  10066.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  10067.       }
  10068.     }
  10069. assert(false);
  10070. }
  10071.  
  10072.  
  10073. QCString VhdlParser::target() {QCString s;
  10074.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10075.     case SLSL_T:
  10076.     case STRINGLITERAL:
  10077.     case BASIC_IDENTIFIER:
  10078.     case EXTENDED_CHARACTER:{if (!hasError) {
  10079.      
  10080.       s = name();
  10081.       }
  10082.       if (!hasError) {
  10083.      
  10084. return s;
  10085.       }
  10086.      
  10087.       break;
  10088.       }
  10089.     case LPAREN_T:{if (!hasError) {
  10090.      
  10091.       s = aggregate();
  10092.       }
  10093.       if (!hasError) {
  10094.      
  10095. return s;
  10096.       }
  10097.      
  10098.       break;
  10099.       }
  10100.     default:
  10101.       jj_la1[226] = jj_gen;
  10102.       jj_consume_token(-1);
  10103.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  10104.     }
  10105. assert(false);
  10106. }
  10107.  
  10108.  
  10109. QCString VhdlParser::term() {QCString s,s1,s2;if (!hasError) {
  10110.    
  10111.     s = factor();
  10112.     }
  10113.     if (!hasError) {
  10114.    
  10115.     while (!hasError) {
  10116.       if (jj_2_100(2)) {
  10117.         ;
  10118.       } else {
  10119.         goto end_label_43;
  10120.       }if (!hasError) {
  10121.      
  10122.       s1 = multiplying_operation();
  10123.       }
  10124.       if (!hasError) {
  10125.      
  10126.       s2 = factor();
  10127.       }
  10128.       if (!hasError) {
  10129.      
  10130. s+=s1;s+=s2;
  10131.       }
  10132.      
  10133.     }
  10134.     end_label_43: ;
  10135.     }
  10136.    
  10137. return s;
  10138. assert(false);
  10139. }
  10140.  
  10141.  
  10142. QCString VhdlParser::timeout_clause() {QCString s;if (!hasError) {
  10143.    
  10144.     jj_consume_token(FOR_T);
  10145.     }
  10146.     if (!hasError) {
  10147.    
  10148.     s = expression();
  10149.     }
  10150.    
  10151. return " for "+s;
  10152. assert(false);
  10153. }
  10154.  
  10155.  
  10156. QCString VhdlParser::type_conversion() {QCString s,s1;if (!hasError) {
  10157.    
  10158.     s = name();
  10159.     }
  10160.     if (!hasError) {
  10161.    
  10162.     jj_consume_token(LPAREN_T);
  10163.     }
  10164.     if (!hasError) {
  10165.    
  10166.     s1 = expression();
  10167.     }
  10168.     if (!hasError) {
  10169.    
  10170.     jj_consume_token(RPAREN_T);
  10171.     }
  10172.    
  10173. return s+"("+s1+")";
  10174. assert(false);
  10175. }
  10176.  
  10177.  
  10178. QCString VhdlParser::type_declaration() {QCString s;
  10179.     if (jj_2_101(3)) {if (!hasError) {
  10180.      
  10181.       s = full_type_declaration();
  10182.       }
  10183.       if (!hasError) {
  10184.      
  10185. return s;
  10186.       }
  10187.      
  10188.     } else {
  10189.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10190.       case TYPE_T:{if (!hasError) {
  10191.        
  10192.         s = incomplete_type_declaration();
  10193.         }
  10194.         if (!hasError) {
  10195.        
  10196. return s;
  10197.         }
  10198.        
  10199.         break;
  10200.         }
  10201.       default:
  10202.         jj_la1[227] = jj_gen;
  10203.         jj_consume_token(-1);
  10204.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  10205.       }
  10206.     }
  10207. assert(false);
  10208. }
  10209.  
  10210.  
  10211. QCString VhdlParser::type_definition() {QCString s;
  10212.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10213.     case RANGE_T:
  10214.     case LPAREN_T:{if (!hasError) {
  10215.      
  10216.       //try{
  10217.       s = scalar_type_definition();
  10218.       }
  10219.       if (!hasError) {
  10220.      
  10221. return s;
  10222.       }
  10223.      
  10224.       break;
  10225.       }
  10226.     case ARRAY_T:
  10227.     case RECORD_T:{if (!hasError) {
  10228.      
  10229.       s = composite_type_definition();
  10230.       }
  10231.       if (!hasError) {
  10232.      
  10233. return s;
  10234.       }
  10235.      
  10236.       break;
  10237.       }
  10238.     case ACCESS_T:{if (!hasError) {
  10239.      
  10240.       s = access_type_definition();
  10241.       }
  10242.       if (!hasError) {
  10243.      
  10244. return s;
  10245.       }
  10246.      
  10247.       break;
  10248.       }
  10249.     case FILE_T:{if (!hasError) {
  10250.      
  10251.       s = file_type_definition();
  10252.       }
  10253.       if (!hasError) {
  10254.      
  10255. return s;
  10256.       }
  10257.      
  10258.       break;
  10259.       }
  10260.     default:
  10261.       jj_la1[228] = jj_gen;
  10262.       if (jj_2_102(2)) {if (!hasError) {
  10263.        
  10264.         protected_type_body();
  10265.         }
  10266.         if (!hasError) {
  10267.        
  10268. return "";
  10269.         }
  10270.        
  10271.       } else {
  10272.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10273.         case PROTECTED_T:{if (!hasError) {
  10274.          
  10275.           protected_type_declaration();
  10276.           }
  10277.           if (!hasError) {
  10278.          
  10279. return "";
  10280.           }
  10281.          
  10282.           break;
  10283.           }
  10284.         default:
  10285.           jj_la1[229] = jj_gen;
  10286.           jj_consume_token(-1);
  10287.           errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  10288.         }
  10289.       }
  10290.     }
  10291. assert(false);
  10292. }
  10293.  
  10294.  
  10295. QCString VhdlParser::type_mark() {QCString s;if (!hasError) {
  10296.    
  10297.     s = name();
  10298.     }
  10299.    
  10300. return s;
  10301. assert(false);
  10302. }
  10303.  
  10304.  
  10305. QCString VhdlParser::unconstraint_array_definition() {QCString s,s1,s2,s3;if (!hasError) {
  10306.    
  10307.     jj_consume_token(ARRAY_T);
  10308.     }
  10309.     if (!hasError) {
  10310.    
  10311.     jj_consume_token(LPAREN_T);
  10312.     }
  10313.     if (!hasError) {
  10314.    
  10315.     s = index_subtype_definition();
  10316.     }
  10317.     if (!hasError) {
  10318.    
  10319.     while (!hasError) {
  10320.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10321.       case COMMA_T:{
  10322.         ;
  10323.         break;
  10324.         }
  10325.       default:
  10326.         jj_la1[230] = jj_gen;
  10327.         goto end_label_44;
  10328.       }if (!hasError) {
  10329.      
  10330.       jj_consume_token(COMMA_T);
  10331.       }
  10332.       if (!hasError) {
  10333.      
  10334.       s1 = index_subtype_definition();
  10335.       }
  10336.       if (!hasError) {
  10337.      
  10338. s3+=",";s3+=s1;
  10339.       }
  10340.      
  10341.     }
  10342.     end_label_44: ;
  10343.     }
  10344.     if (!hasError) {
  10345.    
  10346.     jj_consume_token(RPAREN_T);
  10347.     }
  10348.     if (!hasError) {
  10349.    
  10350.     jj_consume_token(OF_T);
  10351.     }
  10352.     if (!hasError) {
  10353.    
  10354.     s2 = subtype_indication();
  10355.     }
  10356.    
  10357. return "array("+s+s3+") of "+s2;
  10358. assert(false);
  10359. }
  10360.  
  10361.  
  10362. QCString VhdlParser::use_clause() {QCString s,s1;if (!hasError) {
  10363.    
  10364.     jj_consume_token(USE_T);
  10365.     }
  10366.     if (!hasError) {
  10367.    
  10368.     s = selected_name();
  10369.     }
  10370.     if (!hasError) {
  10371.    
  10372.     while (!hasError) {
  10373.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10374.       case COMMA_T:{
  10375.         ;
  10376.         break;
  10377.         }
  10378.       default:
  10379.         jj_la1[231] = jj_gen;
  10380.         goto end_label_45;
  10381.       }if (!hasError) {
  10382.      
  10383.       jj_consume_token(COMMA_T);
  10384.       }
  10385.       if (!hasError) {
  10386.      
  10387.       s1 = selected_name();
  10388.       }
  10389.       if (!hasError) {
  10390.      
  10391. s+=",";s+=s1;
  10392.       }
  10393.      
  10394.     }
  10395.     end_label_45: ;
  10396.     }
  10397.     if (!hasError) {
  10398.    
  10399.     jj_consume_token(SEMI_T);
  10400.     }
  10401.    
  10402. QStringList ql1=QStringList::split(",",s,FALSE);
  10403.                    for (uint j=0;j<ql1.count();j++)
  10404.                    {
  10405.                     QStringList ql=QStringList::split(".",ql1[j],FALSE);
  10406.                     QCString it=ql[1].utf8();
  10407.                      if ( parse_sec==0 && Config_getBool(SHOW_INCLUDE_FILES) )
  10408.                      {
  10409.                        VhdlParser::addVhdlType(it.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::USE,it.data(),"_use_",Public);
  10410.                      }
  10411.                    }
  10412.                    s1="use "+s;
  10413.                    return s1;
  10414. assert(false);
  10415. }
  10416.  
  10417.  
  10418. QCString VhdlParser::variable_assignment_statement() {QCString s,s1,s2;
  10419.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10420.     case LPAREN_T:
  10421.     case SLSL_T:
  10422.     case STRINGLITERAL:
  10423.     case BASIC_IDENTIFIER:
  10424.     case EXTENDED_CHARACTER:{if (!hasError) {
  10425.      
  10426.       if (jj_2_103(2)) {if (!hasError) {
  10427.        
  10428.         s = identifier();
  10429.         }
  10430.         if (!hasError) {
  10431.        
  10432.         jj_consume_token(COLON_T);
  10433.         }
  10434.         if (!hasError) {
  10435.        
  10436. s+=":";
  10437.         }
  10438.        
  10439.       } else {
  10440.         ;
  10441.       }
  10442.       }
  10443.       if (!hasError) {
  10444.      
  10445.       s1 = target();
  10446.       }
  10447.       if (!hasError) {
  10448.      
  10449.       jj_consume_token(VARASSIGN_T);
  10450.       }
  10451.       if (!hasError) {
  10452.      
  10453.       s2 = expression();
  10454.       }
  10455.       if (!hasError) {
  10456.      
  10457.       jj_consume_token(SEMI_T);
  10458.       }
  10459.       if (!hasError) {
  10460.      
  10461. return s+s1+":="+s2+";";
  10462.       }
  10463.      
  10464.       break;
  10465.       }
  10466.     case WITH_T:{if (!hasError) {
  10467.      
  10468.       selected_variable_assignment();
  10469.       }
  10470.       if (!hasError) {
  10471.      
  10472. return "";
  10473.       }
  10474.      
  10475.       break;
  10476.       }
  10477.     default:
  10478.       jj_la1[232] = jj_gen;
  10479.       jj_consume_token(-1);
  10480.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  10481.     }
  10482. assert(false);
  10483. }
  10484.  
  10485.  
  10486. QCString VhdlParser::variable_declaration() {Token *tok=0;Token *t1=0;QCString s,s1,s2;if (!hasError) {
  10487.    
  10488.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10489.     case SHARED_T:{if (!hasError) {
  10490.      
  10491.       tok = jj_consume_token(SHARED_T);
  10492.       }
  10493.      
  10494.       break;
  10495.       }
  10496.     default:
  10497.       jj_la1[233] = jj_gen;
  10498.       ;
  10499.     }
  10500.     }
  10501.     if (!hasError) {
  10502.    
  10503.     jj_consume_token(VARIABLE_T);
  10504.     }
  10505.     if (!hasError) {
  10506.    
  10507.     s = identifier_list();
  10508.     }
  10509.     if (!hasError) {
  10510.    
  10511.     jj_consume_token(COLON_T);
  10512.     }
  10513.     if (!hasError) {
  10514.    
  10515.     s1 = subtype_indication();
  10516.     }
  10517.     if (!hasError) {
  10518.    
  10519.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10520.     case VARASSIGN_T:{if (!hasError) {
  10521.      
  10522.       t1 = jj_consume_token(VARASSIGN_T);
  10523.       }
  10524.       if (!hasError) {
  10525.      
  10526.       s2 = expression();
  10527.       }
  10528.      
  10529.       break;
  10530.       }
  10531.     default:
  10532.       jj_la1[234] = jj_gen;
  10533.       ;
  10534.     }
  10535.     }
  10536.     if (!hasError) {
  10537.    
  10538.     jj_consume_token(SEMI_T);
  10539.     }
  10540.    
  10541. int spec;
  10542.     if(t1)
  10543.      s2.prepend(":=");
  10544.     QCString val=" variable "+s+":"+s1+s2+";";
  10545.     QCString it=s1;
  10546.     if(tok != 0)
  10547.     {
  10548.      it.prepend(" shared ");
  10549.      val.prepend(" shared");
  10550.      spec=VhdlDocGen::SHAREDVARIABLE;
  10551.      }
  10552.      else
  10553.      spec=VhdlDocGen::SHAREDVARIABLE;
  10554.  
  10555.     if(t1){
  10556.      it+=":=";
  10557.      it+=s2;
  10558.      }
  10559.     addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,spec,0,it.data(),Public);
  10560.     return val;
  10561. assert(false);
  10562. }
  10563.  
  10564.  
  10565. QCString VhdlParser::wait_statement() {QCString s,s1,s2,s3;Token *t=0;if (!hasError) {
  10566.    
  10567.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10568.     case BASIC_IDENTIFIER:
  10569.     case EXTENDED_CHARACTER:{if (!hasError) {
  10570.      
  10571.       s = identifier();
  10572.       }
  10573.       if (!hasError) {
  10574.      
  10575.       t = jj_consume_token(COLON_T);
  10576.       }
  10577.      
  10578.       break;
  10579.       }
  10580.     default:
  10581.       jj_la1[235] = jj_gen;
  10582.       ;
  10583.     }
  10584.     }
  10585.     if (!hasError) {
  10586.    
  10587.     jj_consume_token(WAIT_T);
  10588.     }
  10589.     if (!hasError) {
  10590.    
  10591.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10592.     case ON_T:{if (!hasError) {
  10593.      
  10594.       s1 = sensitivity_clause();
  10595.       }
  10596.      
  10597.       break;
  10598.       }
  10599.     default:
  10600.       jj_la1[236] = jj_gen;
  10601.       ;
  10602.     }
  10603.     }
  10604.     if (!hasError) {
  10605.    
  10606.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10607.     case UNTIL_T:{if (!hasError) {
  10608.      
  10609.       s2 = condition_clause();
  10610.       }
  10611.      
  10612.       break;
  10613.       }
  10614.     default:
  10615.       jj_la1[237] = jj_gen;
  10616.       ;
  10617.     }
  10618.     }
  10619.     if (!hasError) {
  10620.    
  10621.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10622.     case FOR_T:{if (!hasError) {
  10623.      
  10624.       s3 = timeout_clause();
  10625.       }
  10626.      
  10627.       break;
  10628.       }
  10629.     default:
  10630.       jj_la1[238] = jj_gen;
  10631.       ;
  10632.     }
  10633.     }
  10634.     if (!hasError) {
  10635.    
  10636.     jj_consume_token(SEMI_T);
  10637.     }
  10638.    
  10639. if(t) s.append(":");
  10640.   return s+" wait "+s1+s2+s3+";";
  10641. assert(false);
  10642. }
  10643.  
  10644.  
  10645. QCString VhdlParser::waveform() {QCString s,s1;
  10646.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10647.     case ABS_T:
  10648.     case NEW_T:
  10649.     case NOT_T:
  10650.     case NULL_T:
  10651.     case LPAREN_T:
  10652.     case PLUS_T:
  10653.     case MINUS_T:
  10654.     case SLSL_T:
  10655.     case INTEGER:
  10656.     case STRINGLITERAL:
  10657.     case BASIC_IDENTIFIER:
  10658.     case EXTENDED_CHARACTER:
  10659.     case CHARACTER_LITERAL:
  10660.     case DECIMAL_LITERAL:
  10661.     case BASED_LITERAL:
  10662.     case BIT_STRING_LITERAL:{if (!hasError) {
  10663.      
  10664.       s = waveform_element();
  10665.       }
  10666.       if (!hasError) {
  10667.      
  10668.       while (!hasError) {
  10669.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10670.         case COMMA_T:{
  10671.           ;
  10672.           break;
  10673.           }
  10674.         default:
  10675.           jj_la1[239] = jj_gen;
  10676.           goto end_label_46;
  10677.         }if (!hasError) {
  10678.        
  10679.         jj_consume_token(COMMA_T);
  10680.         }
  10681.         if (!hasError) {
  10682.        
  10683.         s1 = waveform_element();
  10684.         }
  10685.         if (!hasError) {
  10686.        
  10687. s+=","; s+=s1;
  10688.         }
  10689.        
  10690.       }
  10691.       end_label_46: ;
  10692.       }
  10693.       if (!hasError) {
  10694.      
  10695. return s;
  10696.       }
  10697.      
  10698.       break;
  10699.       }
  10700.     case UNAFFECTED_T:{if (!hasError) {
  10701.      
  10702.       jj_consume_token(UNAFFECTED_T);
  10703.       }
  10704.       if (!hasError) {
  10705.      
  10706. return " unaffected ";
  10707.       }
  10708.      
  10709.       break;
  10710.       }
  10711.     default:
  10712.       jj_la1[240] = jj_gen;
  10713.       jj_consume_token(-1);
  10714.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  10715.     }
  10716. assert(false);
  10717. }
  10718.  
  10719.  
  10720. QCString VhdlParser::waveform_element() {QCString s,s1;if (!hasError) {
  10721.    
  10722.     s = expression();
  10723.     }
  10724.     if (!hasError) {
  10725.    
  10726.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10727.     case AFTER_T:{if (!hasError) {
  10728.      
  10729.       jj_consume_token(AFTER_T);
  10730.       }
  10731.       if (!hasError) {
  10732.      
  10733.       s1 = expression();
  10734.       }
  10735.       if (!hasError) {
  10736.      
  10737. s1.prepend(" after ");
  10738.       }
  10739.      
  10740.       break;
  10741.       }
  10742.     default:
  10743.       jj_la1[241] = jj_gen;
  10744.       ;
  10745.     }
  10746.     }
  10747.    
  10748. return s+s1;
  10749. assert(false);
  10750. }
  10751.  
  10752.  
  10753. QCString VhdlParser::protected_type_body() {if (!hasError) {
  10754.    
  10755.     jj_consume_token(PROTECTED_T);
  10756.     }
  10757.     if (!hasError) {
  10758.    
  10759.     jj_consume_token(BODY_T);
  10760.     }
  10761.     if (!hasError) {
  10762.    
  10763.     protected_type_body_declarative_part();
  10764.     }
  10765.     if (!hasError) {
  10766.    
  10767.     jj_consume_token(END_T);
  10768.     }
  10769.     if (!hasError) {
  10770.    
  10771.     jj_consume_token(PROTECTED_T);
  10772.     }
  10773.     if (!hasError) {
  10774.    
  10775.     jj_consume_token(BODY_T);
  10776.     }
  10777.     if (!hasError) {
  10778.    
  10779.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10780.     case BASIC_IDENTIFIER:
  10781.     case EXTENDED_CHARACTER:{if (!hasError) {
  10782.      
  10783.       identifier();
  10784.       }
  10785.      
  10786.       break;
  10787.       }
  10788.     default:
  10789.       jj_la1[242] = jj_gen;
  10790.       ;
  10791.     }
  10792.     }
  10793.    
  10794. return "";
  10795. assert(false);
  10796. }
  10797.  
  10798.  
  10799. void VhdlParser::protected_type_body_declarative_item() {
  10800.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10801.     case FUNCTION_T:
  10802.     case IMPURE_T:
  10803.     case PROCEDURE_T:
  10804.     case PURE_T:{if (!hasError) {
  10805.      
  10806.       subprogram_declaration();
  10807.       }
  10808.      
  10809.       break;
  10810.       }
  10811.     case IS_T:{if (!hasError) {
  10812.      
  10813.       subprogram_body();
  10814.       }
  10815.      
  10816.       break;
  10817.       }
  10818.     case TYPE_T:{if (!hasError) {
  10819.      
  10820.       type_declaration();
  10821.       }
  10822.      
  10823.       break;
  10824.       }
  10825.     case SUBTYPE_T:{if (!hasError) {
  10826.      
  10827.       subtype_declaration();
  10828.       }
  10829.      
  10830.       break;
  10831.       }
  10832.     case CONSTANT_T:{if (!hasError) {
  10833.      
  10834.       constant_declaration();
  10835.       }
  10836.      
  10837.       break;
  10838.       }
  10839.     case SHARED_T:
  10840.     case VARIABLE_T:{if (!hasError) {
  10841.      
  10842.       variable_declaration();
  10843.       }
  10844.      
  10845.       break;
  10846.       }
  10847.     case FILE_T:{if (!hasError) {
  10848.      
  10849.       file_declaration();
  10850.       }
  10851.      
  10852.       break;
  10853.       }
  10854.     case ALIAS_T:{if (!hasError) {
  10855.      
  10856.       alias_declaration();
  10857.       }
  10858.      
  10859.       break;
  10860.       }
  10861.     default:
  10862.       jj_la1[243] = jj_gen;
  10863.       if (jj_2_104(2147483647)) {if (!hasError) {
  10864.        
  10865.         attribute_declaration();
  10866.         }
  10867.        
  10868.       } else {
  10869.         switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10870.         case ATTRIBUTE_T:{if (!hasError) {
  10871.          
  10872.           attribute_specification();
  10873.           }
  10874.          
  10875.           break;
  10876.           }
  10877.         case USE_T:{if (!hasError) {
  10878.          
  10879.           use_clause();
  10880.           }
  10881.          
  10882.           break;
  10883.           }
  10884.         default:
  10885.           jj_la1[244] = jj_gen;
  10886.           if (jj_2_105(3)) {if (!hasError) {
  10887.            
  10888.             group_template_declaration();
  10889.             }
  10890.            
  10891.           } else {
  10892.             switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10893.             case GROUP_T:{if (!hasError) {
  10894.              
  10895.               group_declaration();
  10896.               }
  10897.              
  10898.               break;
  10899.               }
  10900.             default:
  10901.               jj_la1[245] = jj_gen;
  10902.               jj_consume_token(-1);
  10903.               errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  10904.             }
  10905.           }
  10906.         }
  10907.       }
  10908.     }
  10909. }
  10910.  
  10911.  
  10912. void VhdlParser::protected_type_body_declarative_part() {if (!hasError) {
  10913.    
  10914.     while (!hasError) {
  10915.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10916.       case ALIAS_T:
  10917.       case ATTRIBUTE_T:
  10918.       case CONSTANT_T:
  10919.       case FILE_T:
  10920.       case FUNCTION_T:
  10921.       case GROUP_T:
  10922.       case IMPURE_T:
  10923.       case IS_T:
  10924.       case PROCEDURE_T:
  10925.       case PURE_T:
  10926.       case SHARED_T:
  10927.       case SUBTYPE_T:
  10928.       case TYPE_T:
  10929.       case USE_T:
  10930.       case VARIABLE_T:{
  10931.         ;
  10932.         break;
  10933.         }
  10934.       default:
  10935.         jj_la1[246] = jj_gen;
  10936.         goto end_label_47;
  10937.       }if (!hasError) {
  10938.      
  10939.       protected_type_body_declarative_item();
  10940.       }
  10941.      
  10942.     }
  10943.     end_label_47: ;
  10944.     }
  10945.    
  10946. }
  10947.  
  10948.  
  10949. QCString VhdlParser::protected_type_declaration() {if (!hasError) {
  10950.    
  10951.     jj_consume_token(PROTECTED_T);
  10952.     }
  10953.     if (!hasError) {
  10954.    
  10955.     try {if (!hasError) {
  10956.      
  10957.       protected_type_declarative_part();
  10958.       }
  10959.      
  10960.     } catch ( ...) {
  10961. error_skipto(END_T);
  10962.     }
  10963.     }
  10964.     if (!hasError) {
  10965.    
  10966.     jj_consume_token(END_T);
  10967.     }
  10968.     if (!hasError) {
  10969.    
  10970.     jj_consume_token(PROTECTED_T);
  10971.     }
  10972.     if (!hasError) {
  10973.    
  10974.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10975.     case BASIC_IDENTIFIER:
  10976.     case EXTENDED_CHARACTER:{if (!hasError) {
  10977.      
  10978.       identifier();
  10979.       }
  10980.      
  10981.       break;
  10982.       }
  10983.     default:
  10984.       jj_la1[247] = jj_gen;
  10985.       ;
  10986.     }
  10987.     }
  10988.    
  10989. return "";
  10990. assert(false);
  10991. }
  10992.  
  10993.  
  10994. void VhdlParser::protected_type_declarative_item() {
  10995.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  10996.     case FUNCTION_T:
  10997.     case IMPURE_T:
  10998.     case PROCEDURE_T:
  10999.     case PURE_T:{if (!hasError) {
  11000.      
  11001.       subprogram_specification();
  11002.       }
  11003.      
  11004.       break;
  11005.       }
  11006.     case ATTRIBUTE_T:{if (!hasError) {
  11007.      
  11008.       attribute_specification();
  11009.       }
  11010.      
  11011.       break;
  11012.       }
  11013.     case USE_T:{if (!hasError) {
  11014.      
  11015.       use_clause();
  11016.       }
  11017.      
  11018.       break;
  11019.       }
  11020.     default:
  11021.       jj_la1[248] = jj_gen;
  11022.       jj_consume_token(-1);
  11023.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  11024.     }
  11025. }
  11026.  
  11027.  
  11028. void VhdlParser::protected_type_declarative_part() {if (!hasError) {
  11029.    
  11030.     while (!hasError) {
  11031.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11032.       case ATTRIBUTE_T:
  11033.       case FUNCTION_T:
  11034.       case IMPURE_T:
  11035.       case PROCEDURE_T:
  11036.       case PURE_T:
  11037.       case USE_T:{
  11038.         ;
  11039.         break;
  11040.         }
  11041.       default:
  11042.         jj_la1[249] = jj_gen;
  11043.         goto end_label_48;
  11044.       }if (!hasError) {
  11045.      
  11046.       protected_type_declarative_item();
  11047.       }
  11048.       if (!hasError) {
  11049.      
  11050.       jj_consume_token(SEMI_T);
  11051.       }
  11052.      
  11053.     }
  11054.     end_label_48: ;
  11055.     }
  11056.    
  11057. }
  11058.  
  11059.  
  11060. QCString VhdlParser::context_ref() {QCString s;if (!hasError) {
  11061.    
  11062.     jj_consume_token(CONTEXT_T);
  11063.     }
  11064.     if (!hasError) {
  11065.    
  11066.     s = identifier_list();
  11067.     }
  11068.     if (!hasError) {
  11069.    
  11070.     jj_consume_token(SEMI_T);
  11071.     }
  11072.    
  11073. return "context "+s ;
  11074. assert(false);
  11075. }
  11076.  
  11077.  
  11078. void VhdlParser::context_declaration() {QCString s,s1;if (!hasError) {
  11079.    
  11080.     jj_consume_token(CONTEXT_T);
  11081.     }
  11082.     if (!hasError) {
  11083.    
  11084.     s = identifier();
  11085.     }
  11086.     if (!hasError) {
  11087.    
  11088.     jj_consume_token(IS_T);
  11089.     }
  11090.     if (!hasError) {
  11091.    
  11092. parse_sec=CONTEXT_SEC;
  11093.     }
  11094.     if (!hasError) {
  11095.    
  11096.     while (!hasError) {
  11097.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11098.       case CONTEXT_T:
  11099.       case LIBRARY_T:
  11100.       case USE_T:{
  11101.         ;
  11102.         break;
  11103.         }
  11104.       default:
  11105.         jj_la1[250] = jj_gen;
  11106.         goto end_label_49;
  11107.       }if (!hasError) {
  11108.      
  11109.       s1 = libustcont_stats();
  11110.       }
  11111.      
  11112.     }
  11113.     end_label_49: ;
  11114.     }
  11115.     if (!hasError) {
  11116.    
  11117.     jj_consume_token(END_T);
  11118.     }
  11119.     if (!hasError) {
  11120.    
  11121.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11122.     case CONTEXT_T:{if (!hasError) {
  11123.      
  11124.       jj_consume_token(CONTEXT_T);
  11125.       }
  11126.      
  11127.       break;
  11128.       }
  11129.     default:
  11130.       jj_la1[251] = jj_gen;
  11131.       ;
  11132.     }
  11133.     }
  11134.     if (!hasError) {
  11135.    
  11136.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11137.     case BASIC_IDENTIFIER:
  11138.     case EXTENDED_CHARACTER:{if (!hasError) {
  11139.      
  11140.       identifier();
  11141.       }
  11142.      
  11143.       break;
  11144.       }
  11145.     default:
  11146.       jj_la1[252] = jj_gen;
  11147.       ;
  11148.     }
  11149.     }
  11150.     if (!hasError) {
  11151.    
  11152.     jj_consume_token(SEMI_T);
  11153.     }
  11154.    
  11155. parse_sec=0;
  11156.                           addVhdlType(s.data(),getLine(LIBRARY_T),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,"context",s1.data(),Public);
  11157. }
  11158.  
  11159.  
  11160. QCString VhdlParser::libustcont_stats() {QCString s;
  11161.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11162.     case USE_T:{if (!hasError) {
  11163.      
  11164.       s = use_clause();
  11165.       }
  11166.       if (!hasError) {
  11167.      
  11168. return s;
  11169.       }
  11170.      
  11171.       break;
  11172.       }
  11173.     case LIBRARY_T:{if (!hasError) {
  11174.      
  11175.       s = library_clause();
  11176.       }
  11177.       if (!hasError) {
  11178.      
  11179. return s;
  11180.       }
  11181.      
  11182.       break;
  11183.       }
  11184.     case CONTEXT_T:{if (!hasError) {
  11185.      
  11186.       s = context_ref();
  11187.       }
  11188.       if (!hasError) {
  11189.      
  11190. return s;
  11191.       }
  11192.      
  11193.       break;
  11194.       }
  11195.     default:
  11196.       jj_la1[253] = jj_gen;
  11197.       jj_consume_token(-1);
  11198.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  11199.     }
  11200. assert(false);
  11201. }
  11202.  
  11203.  
  11204. void VhdlParser::package_instantiation_declaration() {QCString s,s1,s2;if (!hasError) {
  11205.    
  11206.     jj_consume_token(PACKAGE_T);
  11207.     }
  11208.     if (!hasError) {
  11209.    
  11210.     s = identifier();
  11211.     }
  11212.     if (!hasError) {
  11213.    
  11214.     jj_consume_token(IS_T);
  11215.     }
  11216.     if (!hasError) {
  11217.    
  11218.     jj_consume_token(NEW_T);
  11219.     }
  11220.     if (!hasError) {
  11221.    
  11222.     s1 = name();
  11223.     }
  11224.     if (!hasError) {
  11225.    
  11226.     s2 = signature();
  11227.     }
  11228.     if (!hasError) {
  11229.    
  11230.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11231.     case GENERIC_T:{if (!hasError) {
  11232.      
  11233.       gen_assoc_list();
  11234.       }
  11235.      
  11236.       break;
  11237.       }
  11238.     default:
  11239.       jj_la1[254] = jj_gen;
  11240.       ;
  11241.     }
  11242.     }
  11243.     if (!hasError) {
  11244.    
  11245.     jj_consume_token(SEMI_T);
  11246.     }
  11247.    
  11248. QCString q=" is new "+s1+s2;
  11249.       addVhdlType(s.data(),getLine(PACKAGE_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"package",q.data(),Public);
  11250. }
  11251.  
  11252.  
  11253. QCString VhdlParser::interface_package_declaration() {QCString s,s1;if (!hasError) {
  11254.    
  11255.     jj_consume_token(PACKAGE_T);
  11256.     }
  11257.     if (!hasError) {
  11258.    
  11259.     s = identifier();
  11260.     }
  11261.     if (!hasError) {
  11262.    
  11263.     jj_consume_token(IS_T);
  11264.     }
  11265.     if (!hasError) {
  11266.    
  11267.     jj_consume_token(NEW_T);
  11268.     }
  11269.     if (!hasError) {
  11270.    
  11271.     s1 = name();
  11272.     }
  11273.     if (!hasError) {
  11274.    
  11275.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11276.     case GENERIC_T:{if (!hasError) {
  11277.      
  11278.       gen_assoc_list();
  11279.       }
  11280.      
  11281.       break;
  11282.       }
  11283.     default:
  11284.       jj_la1[255] = jj_gen;
  11285.       ;
  11286.     }
  11287.     }
  11288.    
  11289. current->name=s;
  11290.                             return "package "+s+" is new "+s1;
  11291. assert(false);
  11292. }
  11293.  
  11294.  
  11295. QCString VhdlParser::subprogram_instantiation_declaration() {QCString s,s1,s2;if (!hasError) {
  11296.    
  11297.     jj_consume_token(FUNCTION_T);
  11298.     }
  11299.     if (!hasError) {
  11300.    
  11301.     s = identifier();
  11302.     }
  11303.     if (!hasError) {
  11304.    
  11305.     jj_consume_token(IS_T);
  11306.     }
  11307.     if (!hasError) {
  11308.    
  11309.     jj_consume_token(NEW_T);
  11310.     }
  11311.     if (!hasError) {
  11312.    
  11313.     s1 = name();
  11314.     }
  11315.     if (!hasError) {
  11316.    
  11317.     s2 = signature();
  11318.     }
  11319.     if (!hasError) {
  11320.    
  11321.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11322.     case GENERIC_T:{if (!hasError) {
  11323.      
  11324.       gen_assoc_list();
  11325.       }
  11326.      
  11327.       break;
  11328.       }
  11329.     default:
  11330.       jj_la1[256] = jj_gen;
  11331.       ;
  11332.     }
  11333.     }
  11334.     if (!hasError) {
  11335.    
  11336.     jj_consume_token(SEMI_T);
  11337.     }
  11338.    
  11339. QCString q= " is new "+s1+s2;
  11340.       addVhdlType(s.data(),getLine(FUNCTION_T),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"function ",q.data(),Public);
  11341.     return q;
  11342. assert(false);
  11343. }
  11344.  
  11345.  
  11346. void VhdlParser::gen_assoc_list() {if (!hasError) {
  11347.    
  11348.     jj_consume_token(GENERIC_T);
  11349.     }
  11350.     if (!hasError) {
  11351.    
  11352.     jj_consume_token(MAP_T);
  11353.     }
  11354.     if (!hasError) {
  11355.    
  11356.     jj_consume_token(LPAREN_T);
  11357.     }
  11358.     if (!hasError) {
  11359.    
  11360.     association_list();
  11361.     }
  11362.     if (!hasError) {
  11363.    
  11364.     jj_consume_token(RPAREN_T);
  11365.     }
  11366.    
  11367. }
  11368.  
  11369.  
  11370. void VhdlParser::gen_interface_list() {if (!hasError) {
  11371.    
  11372.     jj_consume_token(GENERIC_T);
  11373.     }
  11374.     if (!hasError) {
  11375.    
  11376.     jj_consume_token(LPAREN_T);
  11377.     }
  11378.     if (!hasError) {
  11379.    
  11380. //int u=s_str.iLine;
  11381.                           parse_sec=GEN_SEC;
  11382.     }
  11383.     if (!hasError) {
  11384.    
  11385.     interface_list();
  11386.     }
  11387.     if (!hasError) {
  11388.    
  11389. //  QCString vo=$3;
  11390.                           parse_sec=0;
  11391.     }
  11392.     if (!hasError) {
  11393.    
  11394.     jj_consume_token(RPAREN_T);
  11395.     }
  11396.    
  11397. }
  11398.  
  11399.  
  11400. void VhdlParser::case_scheme() {if (!hasError) {
  11401.    
  11402.     jj_consume_token(CASE_T);
  11403.     }
  11404.     if (!hasError) {
  11405.    
  11406.     expression();
  11407.     }
  11408.     if (!hasError) {
  11409.    
  11410.     jj_consume_token(GENERATE_T);
  11411.     }
  11412.     if (!hasError) {
  11413.    
  11414.     when_stats();
  11415.     }
  11416.     if (!hasError) {
  11417.    
  11418.     if (jj_2_106(3)) {if (!hasError) {
  11419.      
  11420.       ttend();
  11421.       }
  11422.      
  11423.     } else {
  11424.       ;
  11425.     }
  11426.     }
  11427.     if (!hasError) {
  11428.    
  11429.     jj_consume_token(END_T);
  11430.     }
  11431.     if (!hasError) {
  11432.    
  11433.     jj_consume_token(GENERATE_T);
  11434.     }
  11435.     if (!hasError) {
  11436.    
  11437.     generate_statement_body();
  11438.     }
  11439.     if (!hasError) {
  11440.    
  11441.     jj_consume_token(SEMI_T);
  11442.     }
  11443.    
  11444. }
  11445.  
  11446.  
  11447. void VhdlParser::when_stats() {if (!hasError) {
  11448.    
  11449.     while (!hasError) {if (!hasError) {
  11450.      
  11451.       jj_consume_token(WHEN_T);
  11452.       }
  11453.       if (!hasError) {
  11454.      
  11455.       if (jj_2_107(2)) {if (!hasError) {
  11456.        
  11457.         label();
  11458.         }
  11459.         if (!hasError) {
  11460.        
  11461.         jj_consume_token(COLON_T);
  11462.         }
  11463.        
  11464.       } else {
  11465.         ;
  11466.       }
  11467.       }
  11468.       if (!hasError) {
  11469.      
  11470.       choices();
  11471.       }
  11472.       if (!hasError) {
  11473.      
  11474.       jj_consume_token(ARROW_T);
  11475.       }
  11476.       if (!hasError) {
  11477.      
  11478.       generate_statement_body();
  11479.       }
  11480.      
  11481.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11482.       case WHEN_T:{
  11483.         ;
  11484.         break;
  11485.         }
  11486.       default:
  11487.         jj_la1[257] = jj_gen;
  11488.         goto end_label_50;
  11489.       }
  11490.     }
  11491.     end_label_50: ;
  11492.     }
  11493.    
  11494. }
  11495.  
  11496.  
  11497. void VhdlParser::ttend() {if (!hasError) {
  11498.    
  11499.     jj_consume_token(END_T);
  11500.     }
  11501.     if (!hasError) {
  11502.    
  11503.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11504.     case BASIC_IDENTIFIER:
  11505.     case EXTENDED_CHARACTER:{if (!hasError) {
  11506.      
  11507.       identifier();
  11508.       }
  11509.      
  11510.       break;
  11511.       }
  11512.     default:
  11513.       jj_la1[258] = jj_gen;
  11514.       ;
  11515.     }
  11516.     }
  11517.     if (!hasError) {
  11518.    
  11519.     jj_consume_token(SEMI_T);
  11520.     }
  11521.    
  11522. }
  11523.  
  11524.  
  11525. void VhdlParser::generate_statement_body() {if (!hasError) {
  11526.    
  11527.     jj_consume_token(BEGIN_T);
  11528.     }
  11529.     if (!hasError) {
  11530.    
  11531.     generate_statement_body();
  11532.     }
  11533.    
  11534. }
  11535.  
  11536.  
  11537. void VhdlParser::generate_statement_body1() {if (!hasError) {
  11538.    
  11539.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11540.     case ALIAS_T:
  11541.     case ATTRIBUTE_T:
  11542.     case BEGIN_T:
  11543.     case COMPONENT_T:
  11544.     case CONSTANT_T:
  11545.     case DISCONNECT_T:
  11546.     case FILE_T:
  11547.     case FOR_T:
  11548.     case FUNCTION_T:
  11549.     case GROUP_T:
  11550.     case IMPURE_T:
  11551.     case PROCEDURE_T:
  11552.     case PURE_T:
  11553.     case SIGNAL_T:
  11554.     case SHARED_T:
  11555.     case SUBTYPE_T:
  11556.     case TYPE_T:
  11557.     case USE_T:
  11558.     case VARIABLE_T:{if (!hasError) {
  11559.      
  11560.       while (!hasError) {
  11561.         if (jj_2_108(2147483647)) {
  11562.           ;
  11563.         } else {
  11564.           goto end_label_51;
  11565.         }if (!hasError) {
  11566.        
  11567.         block_declarative_item();
  11568.         }
  11569.        
  11570.       }
  11571.       end_label_51: ;
  11572.       }
  11573.       if (!hasError) {
  11574.      
  11575.       jj_consume_token(BEGIN_T);
  11576.       }
  11577.      
  11578.       break;
  11579.       }
  11580.     default:
  11581.       jj_la1[259] = jj_gen;
  11582.       ;
  11583.     }
  11584.     }
  11585.     if (!hasError) {
  11586.    
  11587.     while (!hasError) {
  11588.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11589.       case ASSERT_T:
  11590.       case CASE_T:
  11591.       case POSTPONED_T:
  11592.       case PROCESS_T:
  11593.       case WITH_T:
  11594.       case LPAREN_T:
  11595.       case SLSL_T:
  11596.       case STRINGLITERAL:
  11597.       case BASIC_IDENTIFIER:
  11598.       case EXTENDED_CHARACTER:
  11599.       case VHDL2008TOOLDIR:{
  11600.         ;
  11601.         break;
  11602.         }
  11603.       default:
  11604.         jj_la1[260] = jj_gen;
  11605.         goto end_label_52;
  11606.       }if (!hasError) {
  11607.      
  11608.       concurrent_statement();
  11609.       }
  11610.      
  11611.     }
  11612.     end_label_52: ;
  11613.     }
  11614.    
  11615. }
  11616.  
  11617.  
  11618. QCString VhdlParser::external_name() {QCString s,s1,s2;if (!hasError) {
  11619.    
  11620.     jj_consume_token(SLSL_T);
  11621.     }
  11622.     if (!hasError) {
  11623.    
  11624.     s = sig_stat();
  11625.     }
  11626.     if (!hasError) {
  11627.    
  11628.     s1 = external_pathname();
  11629.     }
  11630.     if (!hasError) {
  11631.    
  11632.     jj_consume_token(COLON_T);
  11633.     }
  11634.     if (!hasError) {
  11635.    
  11636.     s2 = subtype_indication();
  11637.     }
  11638.     if (!hasError) {
  11639.    
  11640.     jj_consume_token(RSRS_T);
  11641.     }
  11642.    
  11643. QCString t="<<"+s;
  11644.                          QCString t1=s1+":"+s2+">>";
  11645.                          return   s+s1;
  11646. assert(false);
  11647. }
  11648.  
  11649.  
  11650. QCString VhdlParser::sig_stat() {Token *t;
  11651.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11652.     case CONSTANT_T:{if (!hasError) {
  11653.      
  11654.       t = jj_consume_token(CONSTANT_T);
  11655.       }
  11656.       if (!hasError) {
  11657.      
  11658. return t->image.data();
  11659.       }
  11660.      
  11661.       break;
  11662.       }
  11663.     case SIGNAL_T:{if (!hasError) {
  11664.      
  11665.       t = jj_consume_token(SIGNAL_T);
  11666.       }
  11667.       if (!hasError) {
  11668.      
  11669. return t->image.data();
  11670.       }
  11671.      
  11672.       break;
  11673.       }
  11674.     case VARIABLE_T:{if (!hasError) {
  11675.      
  11676.       t = jj_consume_token(VARIABLE_T);
  11677.       }
  11678.       if (!hasError) {
  11679.      
  11680. return t->image.data();
  11681.       }
  11682.      
  11683.       break;
  11684.       }
  11685.     default:
  11686.       jj_la1[261] = jj_gen;
  11687.       jj_consume_token(-1);
  11688.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  11689.     }
  11690. assert(false);
  11691. }
  11692.  
  11693.  
  11694. QCString VhdlParser::external_pathname() {QCString s;
  11695.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11696.     case DOT_T:{if (!hasError) {
  11697.      
  11698.       s = absolute_pathname();
  11699.       }
  11700.       if (!hasError) {
  11701.      
  11702. return s;
  11703.       }
  11704.      
  11705.       break;
  11706.       }
  11707.     case NEG_T:{if (!hasError) {
  11708.      
  11709.       s = relative_pathname();
  11710.       }
  11711.       if (!hasError) {
  11712.      
  11713. return s;
  11714.       }
  11715.      
  11716.       break;
  11717.       }
  11718.     case AT_T:{if (!hasError) {
  11719.      
  11720.       s = package_path_name();
  11721.       }
  11722.       if (!hasError) {
  11723.      
  11724. return s;
  11725.       }
  11726.      
  11727.       break;
  11728.       }
  11729.     default:
  11730.       jj_la1[262] = jj_gen;
  11731.       jj_consume_token(-1);
  11732.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  11733.     }
  11734. assert(false);
  11735. }
  11736.  
  11737.  
  11738. QCString VhdlParser::absolute_pathname() {QCString s,s1;
  11739.     if (jj_2_109(2147483647)) {if (!hasError) {
  11740.      
  11741.       jj_consume_token(DOT_T);
  11742.       }
  11743.       if (!hasError) {
  11744.      
  11745.       s = pathname_element_list();
  11746.       }
  11747.       if (!hasError) {
  11748.      
  11749.       s1 = identifier();
  11750.       }
  11751.       if (!hasError) {
  11752.      
  11753. return "."+s+s1;
  11754.       }
  11755.      
  11756.     } else {
  11757.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11758.       case DOT_T:{if (!hasError) {
  11759.        
  11760.         jj_consume_token(DOT_T);
  11761.         }
  11762.         if (!hasError) {
  11763.        
  11764.         s = identifier();
  11765.         }
  11766.         if (!hasError) {
  11767.        
  11768. return "."+s;
  11769.         }
  11770.        
  11771.         break;
  11772.         }
  11773.       default:
  11774.         jj_la1[263] = jj_gen;
  11775.         jj_consume_token(-1);
  11776.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  11777.       }
  11778.     }
  11779. assert(false);
  11780. }
  11781.  
  11782.  
  11783. QCString VhdlParser::relative_pathname() {QCString s,s1,s2;if (!hasError) {
  11784.    
  11785.     s = neg_list();
  11786.     }
  11787.     if (!hasError) {
  11788.    
  11789.     if (jj_2_110(2147483647)) {if (!hasError) {
  11790.      
  11791.       s1 = pathname_element_list();
  11792.       }
  11793.      
  11794.     } else {
  11795.       ;
  11796.     }
  11797.     }
  11798.     if (!hasError) {
  11799.    
  11800.     s2 = identifier();
  11801.     }
  11802.    
  11803. return s+s1+s2;
  11804. assert(false);
  11805. }
  11806.  
  11807.  
  11808. QCString VhdlParser::neg_list() {QCString s;if (!hasError) {
  11809.    
  11810.     while (!hasError) {if (!hasError) {
  11811.      
  11812.       jj_consume_token(NEG_T);
  11813.       }
  11814.       if (!hasError) {
  11815.      
  11816.       jj_consume_token(DOT_T);
  11817.       }
  11818.       if (!hasError) {
  11819.      
  11820. s+="^.";
  11821.       }
  11822.      
  11823.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11824.       case NEG_T:{
  11825.         ;
  11826.         break;
  11827.         }
  11828.       default:
  11829.         jj_la1[264] = jj_gen;
  11830.         goto end_label_53;
  11831.       }
  11832.     }
  11833.     end_label_53: ;
  11834.     }
  11835.    
  11836. return s;
  11837. assert(false);
  11838. }
  11839.  
  11840.  
  11841. QCString VhdlParser::pathname_element() {QCString s,s1;if (!hasError) {
  11842.    
  11843.     s = identifier();
  11844.     }
  11845.     if (!hasError) {
  11846.    
  11847.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11848.     case LPAREN_T:{if (!hasError) {
  11849.      
  11850.       jj_consume_token(LPAREN_T);
  11851.       }
  11852.       if (!hasError) {
  11853.      
  11854.       s1 = expression();
  11855.       }
  11856.       if (!hasError) {
  11857.      
  11858.       jj_consume_token(RPAREN_T);
  11859.       }
  11860.      
  11861.       break;
  11862.       }
  11863.     default:
  11864.       jj_la1[265] = jj_gen;
  11865.       ;
  11866.     }
  11867.     }
  11868.    
  11869. if(!s1.isEmpty())
  11870.      return s+"("+s1+")";
  11871.  
  11872.     return s;
  11873. assert(false);
  11874. }
  11875.  
  11876.  
  11877. QCString VhdlParser::pathname_element_list() {QCString s,s1,s2;if (!hasError) {
  11878.     if (!hasError) {
  11879.    
  11880.     s = pathname_element();
  11881.     }
  11882.     if (!hasError) {
  11883.    
  11884.     jj_consume_token(DOT_T);
  11885.     }
  11886.    
  11887.     }
  11888.     if (!hasError) {
  11889.    
  11890. s+=".";
  11891.     }
  11892.     if (!hasError) {
  11893.    
  11894.     while (!hasError) {
  11895.       if (jj_2_111(2147483647)) {
  11896.         ;
  11897.       } else {
  11898.         goto end_label_54;
  11899.       }if (!hasError) {
  11900.      
  11901.       s1 = pathname_element();
  11902.       }
  11903.       if (!hasError) {
  11904.      
  11905.       jj_consume_token(DOT_T);
  11906.       }
  11907.       if (!hasError) {
  11908.      
  11909. s2+=s1;s2+=".";
  11910.       }
  11911.      
  11912.     }
  11913.     end_label_54: ;
  11914.     }
  11915.    
  11916. return s+s2;
  11917. assert(false);
  11918. }
  11919.  
  11920.  
  11921. QCString VhdlParser::package_path_name() {QCString s;if (!hasError) {
  11922.    
  11923.     jj_consume_token(AT_T);
  11924.     }
  11925.     if (!hasError) {
  11926.    
  11927.     s = name();
  11928.     }
  11929.    
  11930. return "@"+s;
  11931. assert(false);
  11932. }
  11933.  
  11934.  
  11935. void VhdlParser::conditional_signal_assignment_wave() {
  11936.     if (jj_2_112(2147483647)) {if (!hasError) {
  11937.      
  11938.       conditional_force_assignment();
  11939.       }
  11940.      
  11941.     } else {
  11942.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11943.       case LPAREN_T:
  11944.       case SLSL_T:
  11945.       case STRINGLITERAL:
  11946.       case BASIC_IDENTIFIER:
  11947.       case EXTENDED_CHARACTER:{if (!hasError) {
  11948.        
  11949.         conditional_waveform_assignment();
  11950.         }
  11951.        
  11952.         break;
  11953.         }
  11954.       default:
  11955.         jj_la1[266] = jj_gen;
  11956.         jj_consume_token(-1);
  11957.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  11958.       }
  11959.     }
  11960. }
  11961.  
  11962.  
  11963. void VhdlParser::conditional_waveform_assignment() {if (!hasError) {
  11964.    
  11965.     target();
  11966.     }
  11967.     if (!hasError) {
  11968.    
  11969.     jj_consume_token(LESSTHAN_T);
  11970.     }
  11971.     if (!hasError) {
  11972.    
  11973.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  11974.     case INERTIAL_T:
  11975.     case REJECT_T:
  11976.     case TRANSPORT_T:{if (!hasError) {
  11977.      
  11978.       delay_mechanism();
  11979.       }
  11980.      
  11981.       break;
  11982.       }
  11983.     default:
  11984.       jj_la1[267] = jj_gen;
  11985.       ;
  11986.     }
  11987.     }
  11988.     if (!hasError) {
  11989.    
  11990.     waveform_element();
  11991.     }
  11992.     if (!hasError) {
  11993.    
  11994.     jj_consume_token(WHEN_T);
  11995.     }
  11996.     if (!hasError) {
  11997.    
  11998.     expression();
  11999.     }
  12000.     if (!hasError) {
  12001.    
  12002.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12003.     case ELSE_T:{if (!hasError) {
  12004.      
  12005.       else_wave_list();
  12006.       }
  12007.      
  12008.       break;
  12009.       }
  12010.     default:
  12011.       jj_la1[268] = jj_gen;
  12012.       ;
  12013.     }
  12014.     }
  12015.     if (!hasError) {
  12016.    
  12017.     jj_consume_token(SEMI_T);
  12018.     }
  12019.    
  12020. }
  12021.  
  12022.  
  12023. void VhdlParser::else_wave_list() {if (!hasError) {
  12024.    
  12025.     jj_consume_token(ELSE_T);
  12026.     }
  12027.     if (!hasError) {
  12028.    
  12029.     expression();
  12030.     }
  12031.     if (!hasError) {
  12032.    
  12033.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12034.     case WHEN_T:{if (!hasError) {
  12035.      
  12036.       jj_consume_token(WHEN_T);
  12037.       }
  12038.       if (!hasError) {
  12039.      
  12040.       expression();
  12041.       }
  12042.      
  12043.       break;
  12044.       }
  12045.     default:
  12046.       jj_la1[269] = jj_gen;
  12047.       ;
  12048.     }
  12049.     }
  12050.    
  12051. }
  12052.  
  12053.  
  12054. void VhdlParser::conditional_force_assignment() {if (!hasError) {
  12055.    
  12056.     target();
  12057.     }
  12058.     if (!hasError) {
  12059.    
  12060.     jj_consume_token(LESSTHAN_T);
  12061.     }
  12062.     if (!hasError) {
  12063.    
  12064.     jj_consume_token(FORCE_T);
  12065.     }
  12066.     if (!hasError) {
  12067.    
  12068.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12069.     case IN_T:
  12070.     case OUT_T:{if (!hasError) {
  12071.      
  12072.       inout_stat();
  12073.       }
  12074.      
  12075.       break;
  12076.       }
  12077.     default:
  12078.       jj_la1[270] = jj_gen;
  12079.       ;
  12080.     }
  12081.     }
  12082.     if (!hasError) {
  12083.    
  12084.     expression();
  12085.     }
  12086.     if (!hasError) {
  12087.    
  12088.     jj_consume_token(WHEN_T);
  12089.     }
  12090.     if (!hasError) {
  12091.    
  12092.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12093.     case ABS_T:
  12094.     case NEW_T:
  12095.     case NOT_T:
  12096.     case NULL_T:
  12097.     case LPAREN_T:
  12098.     case PLUS_T:
  12099.     case MINUS_T:
  12100.     case SLSL_T:
  12101.     case INTEGER:
  12102.     case STRINGLITERAL:
  12103.     case BASIC_IDENTIFIER:
  12104.     case EXTENDED_CHARACTER:
  12105.     case CHARACTER_LITERAL:
  12106.     case DECIMAL_LITERAL:
  12107.     case BASED_LITERAL:
  12108.     case BIT_STRING_LITERAL:{if (!hasError) {
  12109.      
  12110.       expression();
  12111.       }
  12112.       if (!hasError) {
  12113.      
  12114.       else_stat();
  12115.       }
  12116.      
  12117.       break;
  12118.       }
  12119.     default:
  12120.       jj_la1[271] = jj_gen;
  12121.       ;
  12122.     }
  12123.     }
  12124.     if (!hasError) {
  12125.    
  12126.     jj_consume_token(SEMI_T);
  12127.     }
  12128.    
  12129. }
  12130.  
  12131.  
  12132. void VhdlParser::selected_signal_assignment_wave() {
  12133.     if (jj_2_113(2147483647)) {if (!hasError) {
  12134.      
  12135.       selected_force_assignment();
  12136.       }
  12137.      
  12138.     } else {
  12139.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12140.       case WITH_T:{if (!hasError) {
  12141.        
  12142.         selected_waveform_assignment();
  12143.         }
  12144.        
  12145.         break;
  12146.         }
  12147.       default:
  12148.         jj_la1[272] = jj_gen;
  12149.         jj_consume_token(-1);
  12150.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  12151.       }
  12152.     }
  12153. }
  12154.  
  12155.  
  12156. void VhdlParser::selected_variable_assignment() {if (!hasError) {
  12157.    
  12158.     jj_consume_token(WITH_T);
  12159.     }
  12160.     if (!hasError) {
  12161.    
  12162.     expression();
  12163.     }
  12164.     if (!hasError) {
  12165.    
  12166.     jj_consume_token(SELECT_T);
  12167.     }
  12168.     if (!hasError) {
  12169.    
  12170.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12171.     case Q_T:{if (!hasError) {
  12172.      
  12173.       jj_consume_token(Q_T);
  12174.       }
  12175.      
  12176.       break;
  12177.       }
  12178.     default:
  12179.       jj_la1[273] = jj_gen;
  12180.       ;
  12181.     }
  12182.     }
  12183.     if (!hasError) {
  12184.    
  12185.     select_name();
  12186.     }
  12187.     if (!hasError) {
  12188.    
  12189.     jj_consume_token(VARASSIGN_T);
  12190.     }
  12191.     if (!hasError) {
  12192.    
  12193.     sel_var_list();
  12194.     }
  12195.    
  12196. }
  12197.  
  12198.  
  12199. void VhdlParser::select_name() {
  12200.     if (jj_2_114(2147483647)) {if (!hasError) {
  12201.      
  12202.       aggregate();
  12203.       }
  12204.      
  12205.     } else {
  12206.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12207.       case SLSL_T:
  12208.       case STRINGLITERAL:
  12209.       case BASIC_IDENTIFIER:
  12210.       case EXTENDED_CHARACTER:{if (!hasError) {
  12211.        
  12212.         name();
  12213.         }
  12214.        
  12215.         break;
  12216.         }
  12217.       default:
  12218.         jj_la1[274] = jj_gen;
  12219.         jj_consume_token(-1);
  12220.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  12221.       }
  12222.     }
  12223. }
  12224.  
  12225.  
  12226. void VhdlParser::selected_waveform_assignment() {if (!hasError) {
  12227.    
  12228.     jj_consume_token(WITH_T);
  12229.     }
  12230.     if (!hasError) {
  12231.    
  12232.     expression();
  12233.     }
  12234.     if (!hasError) {
  12235.    
  12236.     jj_consume_token(SELECT_T);
  12237.     }
  12238.     if (!hasError) {
  12239.    
  12240.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12241.     case Q_T:{if (!hasError) {
  12242.      
  12243.       jj_consume_token(Q_T);
  12244.       }
  12245.      
  12246.       break;
  12247.       }
  12248.     default:
  12249.       jj_la1[275] = jj_gen;
  12250.       ;
  12251.     }
  12252.     }
  12253.     if (!hasError) {
  12254.    
  12255.     target();
  12256.     }
  12257.     if (!hasError) {
  12258.    
  12259.     jj_consume_token(LESSTHAN_T);
  12260.     }
  12261.     if (!hasError) {
  12262.    
  12263.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12264.     case INERTIAL_T:
  12265.     case REJECT_T:
  12266.     case TRANSPORT_T:{if (!hasError) {
  12267.      
  12268.       delay_mechanism();
  12269.       }
  12270.      
  12271.       break;
  12272.       }
  12273.     default:
  12274.       jj_la1[276] = jj_gen;
  12275.       ;
  12276.     }
  12277.     }
  12278.     if (!hasError) {
  12279.    
  12280.     sel_wave_list();
  12281.     }
  12282.    
  12283. }
  12284.  
  12285.  
  12286. void VhdlParser::selected_force_assignment() {if (!hasError) {
  12287.    
  12288.     jj_consume_token(WITH_T);
  12289.     }
  12290.     if (!hasError) {
  12291.    
  12292.     expression();
  12293.     }
  12294.     if (!hasError) {
  12295.    
  12296.     jj_consume_token(SELECT_T);
  12297.     }
  12298.     if (!hasError) {
  12299.    
  12300.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12301.     case Q_T:{if (!hasError) {
  12302.      
  12303.       jj_consume_token(Q_T);
  12304.       }
  12305.      
  12306.       break;
  12307.       }
  12308.     default:
  12309.       jj_la1[277] = jj_gen;
  12310.       ;
  12311.     }
  12312.     }
  12313.     if (!hasError) {
  12314.    
  12315.     target();
  12316.     }
  12317.     if (!hasError) {
  12318.    
  12319.     jj_consume_token(LESSTHAN_T);
  12320.     }
  12321.     if (!hasError) {
  12322.    
  12323.     jj_consume_token(FORCE_T);
  12324.     }
  12325.     if (!hasError) {
  12326.    
  12327.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12328.     case IN_T:
  12329.     case OUT_T:{if (!hasError) {
  12330.      
  12331.       inout_stat();
  12332.       }
  12333.      
  12334.       break;
  12335.       }
  12336.     default:
  12337.       jj_la1[278] = jj_gen;
  12338.       ;
  12339.     }
  12340.     }
  12341.     if (!hasError) {
  12342.    
  12343.     sel_var_list();
  12344.     }
  12345.    
  12346. }
  12347.  
  12348.  
  12349. void VhdlParser::sel_var_list() {if (!hasError) {
  12350.     if (!hasError) {
  12351.    
  12352.     expression();
  12353.     }
  12354.     if (!hasError) {
  12355.    
  12356.     jj_consume_token(WHEN_T);
  12357.     }
  12358.     if (!hasError) {
  12359.    
  12360.     choices();
  12361.     }
  12362.     if (!hasError) {
  12363.    
  12364.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12365.     case COMMA_T:{if (!hasError) {
  12366.      
  12367.       jj_consume_token(COMMA_T);
  12368.       }
  12369.      
  12370.       break;
  12371.       }
  12372.     case SEMI_T:{if (!hasError) {
  12373.      
  12374.       jj_consume_token(SEMI_T);
  12375.       }
  12376.      
  12377.       break;
  12378.       }
  12379.     default:
  12380.       jj_la1[279] = jj_gen;
  12381.       jj_consume_token(-1);
  12382.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  12383.     }
  12384.     }
  12385.    
  12386.     }
  12387.     if (!hasError) {
  12388.    
  12389.     while (!hasError) {
  12390.       if (jj_2_115(2147483647)) {
  12391.         ;
  12392.       } else {
  12393.         goto end_label_55;
  12394.       }if (!hasError) {
  12395.      
  12396.       expression();
  12397.       }
  12398.       if (!hasError) {
  12399.      
  12400.       jj_consume_token(WHEN_T);
  12401.       }
  12402.       if (!hasError) {
  12403.      
  12404.       choices();
  12405.       }
  12406.       if (!hasError) {
  12407.      
  12408.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12409.       case COMMA_T:{if (!hasError) {
  12410.        
  12411.         jj_consume_token(COMMA_T);
  12412.         }
  12413.        
  12414.         break;
  12415.         }
  12416.       case SEMI_T:{if (!hasError) {
  12417.        
  12418.         jj_consume_token(SEMI_T);
  12419.         }
  12420.        
  12421.         break;
  12422.         }
  12423.       default:
  12424.         jj_la1[280] = jj_gen;
  12425.         jj_consume_token(-1);
  12426.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  12427.       }
  12428.       }
  12429.      
  12430.     }
  12431.     end_label_55: ;
  12432.     }
  12433.    
  12434. }
  12435.  
  12436.  
  12437. void VhdlParser::sel_wave_list() {if (!hasError) {
  12438.    
  12439.     waveform_element();
  12440.     }
  12441.     if (!hasError) {
  12442.    
  12443.     jj_consume_token(WHEN_T);
  12444.     }
  12445.     if (!hasError) {
  12446.    
  12447.     choices();
  12448.     }
  12449.     if (!hasError) {
  12450.    
  12451.     while (!hasError) {
  12452.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12453.       case COMMA_T:{
  12454.         ;
  12455.         break;
  12456.         }
  12457.       default:
  12458.         jj_la1[281] = jj_gen;
  12459.         goto end_label_56;
  12460.       }if (!hasError) {
  12461.      
  12462.       jj_consume_token(COMMA_T);
  12463.       }
  12464.       if (!hasError) {
  12465.      
  12466.       sel_wave_list();
  12467.       }
  12468.      
  12469.     }
  12470.     end_label_56: ;
  12471.     }
  12472.     if (!hasError) {
  12473.    
  12474.     jj_consume_token(SEMI_T);
  12475.     }
  12476.    
  12477. }
  12478.  
  12479.  
  12480. void VhdlParser::inout_stat() {
  12481.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12482.     case IN_T:{if (!hasError) {
  12483.      
  12484.       jj_consume_token(IN_T);
  12485.       }
  12486.      
  12487.       break;
  12488.       }
  12489.     case OUT_T:{if (!hasError) {
  12490.      
  12491.       jj_consume_token(OUT_T);
  12492.       }
  12493.      
  12494.       break;
  12495.       }
  12496.     default:
  12497.       jj_la1[282] = jj_gen;
  12498.       jj_consume_token(-1);
  12499.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  12500.     }
  12501. }
  12502.  
  12503.  
  12504. void VhdlParser::else_stat() {if (!hasError) {
  12505.    
  12506.     while (!hasError) {if (!hasError) {
  12507.      
  12508.       jj_consume_token(ELSE_T);
  12509.       }
  12510.       if (!hasError) {
  12511.      
  12512.       expression();
  12513.       }
  12514.       if (!hasError) {
  12515.      
  12516.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12517.       case WHEN_T:{if (!hasError) {
  12518.        
  12519.         jj_consume_token(WHEN_T);
  12520.         }
  12521.         if (!hasError) {
  12522.        
  12523.         expression();
  12524.         }
  12525.        
  12526.         break;
  12527.         }
  12528.       default:
  12529.         jj_la1[283] = jj_gen;
  12530.         ;
  12531.       }
  12532.       }
  12533.      
  12534.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12535.       case ELSE_T:{
  12536.         ;
  12537.         break;
  12538.         }
  12539.       default:
  12540.         jj_la1[284] = jj_gen;
  12541.         goto end_label_57;
  12542.       }
  12543.     }
  12544.     end_label_57: ;
  12545.     }
  12546.    
  12547. }
  12548.  
  12549.  
  12550. QCString VhdlParser::interface_subprogram_declaration() {QCString s;
  12551.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12552.     case PROCEDURE_T:{if (!hasError) {
  12553.      
  12554.       s = iproc();
  12555.       }
  12556.       if (!hasError) {
  12557.      
  12558. return s;
  12559.       }
  12560.      
  12561.       break;
  12562.       }
  12563.     case FUNCTION_T:
  12564.     case IMPURE_T:
  12565.     case PURE_T:{if (!hasError) {
  12566.      
  12567.       s = ifunc();
  12568.       }
  12569.       if (!hasError) {
  12570.      
  12571. return s;
  12572.       }
  12573.      
  12574.       break;
  12575.       }
  12576.     default:
  12577.       jj_la1[285] = jj_gen;
  12578.       jj_consume_token(-1);
  12579.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  12580.     }
  12581. assert(false);
  12582. }
  12583.  
  12584.  
  12585. QCString VhdlParser::iproc() {QCString s,s1;if (!hasError) {
  12586.    
  12587.     jj_consume_token(PROCEDURE_T);
  12588.     }
  12589.     if (!hasError) {
  12590.    
  12591.     s = identifier();
  12592.     }
  12593.     if (!hasError) {
  12594.    
  12595.     s1 = param();
  12596.     }
  12597.    
  12598. current->name=s;
  12599.   return "procedure "+s+s1;
  12600. assert(false);
  12601. }
  12602.  
  12603.  
  12604. QCString VhdlParser::ifunc() {QCString s,s1,s2,s3;Token *t=0;Token *t1=0;Token *t2=0;if (!hasError) {
  12605.    
  12606.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12607.     case IMPURE_T:
  12608.     case PURE_T:{
  12609.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12610.       case PURE_T:{if (!hasError) {
  12611.        
  12612.         t = jj_consume_token(PURE_T);
  12613.         }
  12614.        
  12615.         break;
  12616.         }
  12617.       case IMPURE_T:{if (!hasError) {
  12618.        
  12619.         t = jj_consume_token(IMPURE_T);
  12620.         }
  12621.        
  12622.         break;
  12623.         }
  12624.       default:
  12625.         jj_la1[286] = jj_gen;
  12626.         jj_consume_token(-1);
  12627.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  12628.       }
  12629.       break;
  12630.       }
  12631.     default:
  12632.       jj_la1[287] = jj_gen;
  12633.       ;
  12634.     }
  12635.     }
  12636.     if (!hasError) {
  12637.    
  12638.     jj_consume_token(FUNCTION_T);
  12639.     }
  12640.     if (!hasError) {
  12641.    
  12642.     s = name();
  12643.     }
  12644.     if (!hasError) {
  12645.    
  12646.     s1 = param();
  12647.     }
  12648.     if (!hasError) {
  12649.    
  12650.     jj_consume_token(RETURN_T);
  12651.     }
  12652.     if (!hasError) {
  12653.    
  12654.     s2 = name();
  12655.     }
  12656.     if (!hasError) {
  12657.    
  12658.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12659.     case IS_T:{if (!hasError) {
  12660.      
  12661.       t1 = jj_consume_token(IS_T);
  12662.       }
  12663.       if (!hasError) {
  12664.      
  12665.       switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12666.       case BASIC_IDENTIFIER:
  12667.       case EXTENDED_CHARACTER:{if (!hasError) {
  12668.        
  12669.         s3 = identifier();
  12670.         }
  12671.        
  12672.         break;
  12673.         }
  12674.       case BOX_T:{if (!hasError) {
  12675.        
  12676.         t2 = jj_consume_token(BOX_T);
  12677.         }
  12678.        
  12679.         break;
  12680.         }
  12681.       default:
  12682.         jj_la1[288] = jj_gen;
  12683.         jj_consume_token(-1);
  12684.         errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  12685.       }
  12686.       }
  12687.      
  12688.       break;
  12689.       }
  12690.     default:
  12691.       jj_la1[289] = jj_gen;
  12692.       ;
  12693.     }
  12694.     }
  12695.    
  12696. QCString q;
  12697.       if(t) q=t->image.data();
  12698.       if(t2) s3="<>";
  12699.       if (!s3.isEmpty())
  12700.       {
  12701.         s3.prepend(" is ");
  12702.       }
  12703.      current->name=s;
  12704.     if (parse_sec==GEN_SEC)
  12705.                     {
  12706.                       QCString ss=q+" function "+s1+" return "+s2+s3;
  12707.                       int a=getLine(FUNCTION_T);
  12708.                       int b=getLine(PROCEDURE_T);
  12709.  
  12710.                       if (a>b) b=a;
  12711.                       addVhdlType(current->name.data(),b,Entry::VARIABLE_SEC,VhdlDocGen::GENERIC,ss.data(),0,Public);
  12712.                     }
  12713.          currP=0;return "";
  12714. assert(false);
  12715. }
  12716.  
  12717.  
  12718. QCString VhdlParser::param() {QCString s,s1;Token *tok=0;if (!hasError) {
  12719.    
  12720.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12721.     case PARAMETER_T:{if (!hasError) {
  12722.      
  12723.       tok = jj_consume_token(PARAMETER_T);
  12724.       }
  12725.      
  12726.       break;
  12727.       }
  12728.     default:
  12729.       jj_la1[290] = jj_gen;
  12730.       ;
  12731.     }
  12732.     }
  12733.     if (!hasError) {
  12734.    
  12735. param_sec=PARAM_SEC;
  12736.     }
  12737.     if (!hasError) {
  12738.    
  12739.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12740.     case LPAREN_T:{if (!hasError) {
  12741.      
  12742.       jj_consume_token(LPAREN_T);
  12743.       }
  12744.       if (!hasError) {
  12745.      
  12746.       s1 = interface_list();
  12747.       }
  12748.       if (!hasError) {
  12749.      
  12750.       jj_consume_token(RPAREN_T);
  12751.       }
  12752.      
  12753.       break;
  12754.       }
  12755.     default:
  12756.       jj_la1[291] = jj_gen;
  12757.       ;
  12758.     }
  12759.     }
  12760.    
  12761. if(tok)
  12762.                      {
  12763.                       s = tok->image.data();
  12764.  
  12765.                     }
  12766.                       param_sec=0;
  12767.                       return s+"("+s1+")";
  12768. assert(false);
  12769. }
  12770.  
  12771.  
  12772. void VhdlParser::parseInline() {
  12773.     switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
  12774.     case POSTPONED_T:
  12775.     case PROCESS_T:
  12776.     case BASIC_IDENTIFIER:
  12777.     case EXTENDED_CHARACTER:{if (!hasError) {
  12778.      
  12779.       process_statement();
  12780.       }
  12781.      
  12782.       break;
  12783.       }
  12784.     case FUNCTION_T:
  12785.     case IMPURE_T:
  12786.     case PROCEDURE_T:
  12787.     case PURE_T:{if (!hasError) {
  12788.      
  12789.       subprogram_declaration();
  12790.       }
  12791.      
  12792.       break;
  12793.       }
  12794.     default:
  12795.       jj_la1[292] = jj_gen;
  12796.       jj_consume_token(-1);
  12797.       errorHandler->handleParseError(token, getToken(1), __FUNCTION__, this), hasError = true;
  12798.     }
  12799. }
  12800.  
  12801.  
  12802.  VhdlParser::VhdlParser(TokenManager *tm){
  12803.     head = NULL;
  12804.     errorHandlerCreated = false;
  12805.     ReInit(tm);
  12806. }
  12807. VhdlParser::~VhdlParser()
  12808. {
  12809.   clear();
  12810. }
  12811.  
  12812. void VhdlParser::ReInit(TokenManager *tm){
  12813.     clear();
  12814.     errorHandler = new ErrorHandler();
  12815.     errorHandlerCreated = true;
  12816.     hasError = false;
  12817.     token_source = tm;
  12818.     head = token = new Token();
  12819.     token->kind = 0;
  12820.     token->next = NULL;
  12821.     jj_lookingAhead = false;
  12822.     jj_rescan = false;
  12823.     jj_done = false;
  12824.     jj_scanpos = jj_lastpos = NULL;
  12825.     jj_gc = 0;
  12826.     jj_kind = -1;
  12827.     trace_indent = 0;
  12828.     trace_enabled = false;
  12829.     jj_ntk = -1;
  12830.     jj_gen = 0;
  12831.     for (int i = 0; i < 293; i++) jj_la1[i] = -1;
  12832.   }
  12833.  
  12834.  
  12835. void VhdlParser::clear(){
  12836.   //Since token manager was generate from outside,
  12837.   //parser should not take care of deleting
  12838.   //if (token_source) delete token_source;
  12839.   if (head) {
  12840.     Token *next, *t = head;
  12841.     while (t) {
  12842.       next = t->next;
  12843.       delete t;
  12844.       t = next;
  12845.     }
  12846.   }
  12847.   if (errorHandlerCreated) {
  12848.     delete errorHandler;
  12849.   }
  12850. }
  12851.  
  12852.  
  12853. Token * VhdlParser::jj_consume_token(int kind)  {
  12854.     Token *oldToken;
  12855.     if ((oldToken = token)->next != NULL) token = token->next;
  12856.     else token = token->next = token_source->getNextToken();
  12857.     jj_ntk = -1;
  12858.     if (token->kind == kind) {
  12859.       jj_gen++;
  12860.       if (++jj_gc > 100) {
  12861.         jj_gc = 0;
  12862.         for (int i = 0; i < 115; i++) {
  12863.           JJCalls *c = &jj_2_rtns[i];
  12864.           while (c != NULL) {
  12865.             if (c->gen < jj_gen) c->first = NULL;
  12866.             c = c->next;
  12867.           }
  12868.         }
  12869.       }
  12870.       return token;
  12871.     }
  12872.     token = oldToken;
  12873.     jj_kind = kind;
  12874.     JAVACC_STRING_TYPE image = kind >= 0 ? tokenImage[kind] : tokenImage[0];
  12875.     errorHandler->handleUnexpectedToken(kind, image.substr(1, image.size() - 2), getToken(1), this);
  12876.     hasError = true;
  12877.     return token;
  12878.   }
  12879.  
  12880.  
  12881. bool  VhdlParser::jj_scan_token(int kind){
  12882.     if (jj_scanpos == jj_lastpos) {
  12883.       jj_la--;
  12884.       if (jj_scanpos->next == NULL) {
  12885.         jj_lastpos = jj_scanpos = jj_scanpos->next = token_source->getNextToken();
  12886.       } else {
  12887.         jj_lastpos = jj_scanpos = jj_scanpos->next;
  12888.       }
  12889.     } else {
  12890.       jj_scanpos = jj_scanpos->next;
  12891.     }
  12892.     if (jj_rescan) {
  12893.       int i = 0; Token *tok = token;
  12894.       while (tok != NULL && tok != jj_scanpos) { i++; tok = tok->next; }
  12895.       if (tok != NULL) jj_add_error_token(kind, i);
  12896.     }
  12897.     if (jj_scanpos->kind != kind) return true;
  12898.     if (jj_la == 0 && jj_scanpos == jj_lastpos) { return jj_done = true; }
  12899.     return false;
  12900.   }
  12901.  
  12902.  
  12903. /** Get the next Token. */
  12904.  
  12905. Token * VhdlParser::getNextToken(){
  12906.     if (token->next != NULL) token = token->next;
  12907.     else token = token->next = token_source->getNextToken();
  12908.     jj_ntk = -1;
  12909.     jj_gen++;
  12910.     return token;
  12911.   }
  12912.  
  12913. /** Get the specific Token. */
  12914.  
  12915. Token * VhdlParser::getToken(int index){
  12916.     Token *t = token;
  12917.     for (int i = 0; i < index; i++) {
  12918.       if (t->next != NULL) t = t->next;
  12919.       else t = t->next = token_source->getNextToken();
  12920.     }
  12921.     return t;
  12922.   }
  12923.  
  12924.  
  12925. int VhdlParser::jj_ntk_f(){
  12926.     if ((jj_nt=token->next) == NULL)
  12927.       return (jj_ntk = (token->next=token_source->getNextToken())->kind);
  12928.     else
  12929.       return (jj_ntk = jj_nt->kind);
  12930.   }
  12931.  
  12932.  
  12933.   void VhdlParser::jj_add_error_token(int kind, int pos)  {
  12934.   }
  12935.  
  12936.  
  12937.  void  VhdlParser::parseError()   {
  12938.       fprintf(stderr, "Parse error at: %d:%d, after token: %s encountered: %s\n", token->beginLine, token->beginColumn, addUnicodeEscapes(token->image).c_str(), addUnicodeEscapes(getToken(1)->image).c_str());
  12939.    }
  12940.  
  12941.  
  12942.   void VhdlParser::enable_tracing()  {
  12943.   }
  12944.  
  12945.   void VhdlParser::disable_tracing()  {
  12946.   }
  12947.  
  12948.  
  12949.   void VhdlParser::jj_rescan_token(){
  12950.     jj_rescan = true;
  12951.     for (int i = 0; i < 115; i++) {
  12952.       JJCalls *p = &jj_2_rtns[i];
  12953.       do {
  12954.         if (p->gen > jj_gen) {
  12955.           jj_la = p->arg; jj_lastpos = jj_scanpos = p->first;
  12956.           switch (i) {
  12957.             case 0: jj_3_1(); break;
  12958.             case 1: jj_3_2(); break;
  12959.             case 2: jj_3_3(); break;
  12960.             case 3: jj_3_4(); break;
  12961.             case 4: jj_3_5(); break;
  12962.             case 5: jj_3_6(); break;
  12963.             case 6: jj_3_7(); break;
  12964.             case 7: jj_3_8(); break;
  12965.             case 8: jj_3_9(); break;
  12966.             case 9: jj_3_10(); break;
  12967.             case 10: jj_3_11(); break;
  12968.             case 11: jj_3_12(); break;
  12969.             case 12: jj_3_13(); break;
  12970.             case 13: jj_3_14(); break;
  12971.             case 14: jj_3_15(); break;
  12972.             case 15: jj_3_16(); break;
  12973.             case 16: jj_3_17(); break;
  12974.             case 17: jj_3_18(); break;
  12975.             case 18: jj_3_19(); break;
  12976.             case 19: jj_3_20(); break;
  12977.             case 20: jj_3_21(); break;
  12978.             case 21: jj_3_22(); break;
  12979.             case 22: jj_3_23(); break;
  12980.             case 23: jj_3_24(); break;
  12981.             case 24: jj_3_25(); break;
  12982.             case 25: jj_3_26(); break;
  12983.             case 26: jj_3_27(); break;
  12984.             case 27: jj_3_28(); break;
  12985.             case 28: jj_3_29(); break;
  12986.             case 29: jj_3_30(); break;
  12987.             case 30: jj_3_31(); break;
  12988.             case 31: jj_3_32(); break;
  12989.             case 32: jj_3_33(); break;
  12990.             case 33: jj_3_34(); break;
  12991.             case 34: jj_3_35(); break;
  12992.             case 35: jj_3_36(); break;
  12993.             case 36: jj_3_37(); break;
  12994.             case 37: jj_3_38(); break;
  12995.             case 38: jj_3_39(); break;
  12996.             case 39: jj_3_40(); break;
  12997.             case 40: jj_3_41(); break;
  12998.             case 41: jj_3_42(); break;
  12999.             case 42: jj_3_43(); break;
  13000.             case 43: jj_3_44(); break;
  13001.             case 44: jj_3_45(); break;
  13002.             case 45: jj_3_46(); break;
  13003.             case 46: jj_3_47(); break;
  13004.             case 47: jj_3_48(); break;
  13005.             case 48: jj_3_49(); break;
  13006.             case 49: jj_3_50(); break;
  13007.             case 50: jj_3_51(); break;
  13008.             case 51: jj_3_52(); break;
  13009.             case 52: jj_3_53(); break;
  13010.             case 53: jj_3_54(); break;
  13011.             case 54: jj_3_55(); break;
  13012.             case 55: jj_3_56(); break;
  13013.             case 56: jj_3_57(); break;
  13014.             case 57: jj_3_58(); break;
  13015.             case 58: jj_3_59(); break;
  13016.             case 59: jj_3_60(); break;
  13017.             case 60: jj_3_61(); break;
  13018.             case 61: jj_3_62(); break;
  13019.             case 62: jj_3_63(); break;
  13020.             case 63: jj_3_64(); break;
  13021.             case 64: jj_3_65(); break;
  13022.             case 65: jj_3_66(); break;
  13023.             case 66: jj_3_67(); break;
  13024.             case 67: jj_3_68(); break;
  13025.             case 68: jj_3_69(); break;
  13026.             case 69: jj_3_70(); break;
  13027.             case 70: jj_3_71(); break;
  13028.             case 71: jj_3_72(); break;
  13029.             case 72: jj_3_73(); break;
  13030.             case 73: jj_3_74(); break;
  13031.             case 74: jj_3_75(); break;
  13032.             case 75: jj_3_76(); break;
  13033.             case 76: jj_3_77(); break;
  13034.             case 77: jj_3_78(); break;
  13035.             case 78: jj_3_79(); break;
  13036.             case 79: jj_3_80(); break;
  13037.             case 80: jj_3_81(); break;
  13038.             case 81: jj_3_82(); break;
  13039.             case 82: jj_3_83(); break;
  13040.             case 83: jj_3_84(); break;
  13041.             case 84: jj_3_85(); break;
  13042.             case 85: jj_3_86(); break;
  13043.             case 86: jj_3_87(); break;
  13044.             case 87: jj_3_88(); break;
  13045.             case 88: jj_3_89(); break;
  13046.             case 89: jj_3_90(); break;
  13047.             case 90: jj_3_91(); break;
  13048.             case 91: jj_3_92(); break;
  13049.             case 92: jj_3_93(); break;
  13050.             case 93: jj_3_94(); break;
  13051.             case 94: jj_3_95(); break;
  13052.             case 95: jj_3_96(); break;
  13053.             case 96: jj_3_97(); break;
  13054.             case 97: jj_3_98(); break;
  13055.             case 98: jj_3_99(); break;
  13056.             case 99: jj_3_100(); break;
  13057.             case 100: jj_3_101(); break;
  13058.             case 101: jj_3_102(); break;
  13059.             case 102: jj_3_103(); break;
  13060.             case 103: jj_3_104(); break;
  13061.             case 104: jj_3_105(); break;
  13062.             case 105: jj_3_106(); break;
  13063.             case 106: jj_3_107(); break;
  13064.             case 107: jj_3_108(); break;
  13065.             case 108: jj_3_109(); break;
  13066.             case 109: jj_3_110(); break;
  13067.             case 110: jj_3_111(); break;
  13068.             case 111: jj_3_112(); break;
  13069.             case 112: jj_3_113(); break;
  13070.             case 113: jj_3_114(); break;
  13071.             case 114: jj_3_115(); break;
  13072.           }
  13073.         }
  13074.         p = p->next;
  13075.       } while (p != NULL);
  13076.     }
  13077.     jj_rescan = false;
  13078.   }
  13079.  
  13080.  
  13081.   void VhdlParser::jj_save(int index, int xla){
  13082.     JJCalls *p = &jj_2_rtns[index];
  13083.     while (p->gen > jj_gen) {
  13084.       if (p->next == NULL) { p = p->next = new JJCalls(); break; }
  13085.       p = p->next;
  13086.     }
  13087.     p->gen = jj_gen + xla - jj_la; p->first = token; p->arg = xla;
  13088.   }
  13089.  
  13090.  
  13091. }
  13092. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement