diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2015-04-27 19:04:45 (GMT) |
---|---|---|
committer | Adrian Negreanu <adrian.m.negreanu@intel.com> | 2015-05-15 16:06:04 (GMT) |
commit | 3eed7a5c5b330736b508c722c9614c774a678ef1 (patch) | |
tree | bd732e7e13c05f9089315b83c0790fa4b7e44737 /vhdlparser/VhdlParser.cc | |
parent | 2c679e7d39144dadef2e9fd25772f0e41586e18b (diff) | |
download | Doxygen-3eed7a5c5b330736b508c722c9614c774a678ef1.zip Doxygen-3eed7a5c5b330736b508c722c9614c774a678ef1.tar.gz Doxygen-3eed7a5c5b330736b508c722c9614c774a678ef1.tar.bz2 |
Various VHDL related fixes
Diffstat (limited to 'vhdlparser/VhdlParser.cc')
-rw-r--r-- | vhdlparser/VhdlParser.cc | 58 |
1 files changed, 41 insertions, 17 deletions
diff --git a/vhdlparser/VhdlParser.cc b/vhdlparser/VhdlParser.cc index c695c93..949f227 100644 --- a/vhdlparser/VhdlParser.cc +++ b/vhdlparser/VhdlParser.cc @@ -1673,7 +1673,7 @@ assert(false); QCString VhdlParser::choice() {QCString s; if (jj_2_10(2147483647)) {if (!hasError) { - s = simple_expression(); + s = discrete_range(); } if (!hasError) { @@ -1682,7 +1682,7 @@ return s; } else if (jj_2_11(2147483647)) {if (!hasError) { - s = discrete_range(); + s = simple_expression(); } if (!hasError) { @@ -1998,7 +1998,7 @@ return s; } if (!hasError) { -return s; +return s+"#"; } break; @@ -2960,7 +2960,9 @@ QCString VhdlParser::element_declaration() {QCString s,s1;if (!hasError) { jj_consume_token(SEMI_T); } -return s+":"+s1; +addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s1.data(),Public); + //addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s1.data(),Public); + return s+":"+s1; assert(false); } @@ -4411,7 +4413,7 @@ assert(false); } -QCString VhdlParser::full_type_declaration() {QCString s,s1,s2;if (!hasError) { +QCString VhdlParser::full_type_declaration() {Entry *tmpEntry;QCString s,s1,s2;if (!hasError) { jj_consume_token(TYPE_T); } @@ -4425,6 +4427,11 @@ QCString VhdlParser::full_type_declaration() {QCString s,s1,s2;if (!hasError) { } if (!hasError) { +tmpEntry=current; + addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,0,Public); + } + if (!hasError) { + try {if (!hasError) { s2 = type_definition(); @@ -4439,8 +4446,25 @@ error_skipto(SEMI_T); jj_consume_token(SEMI_T); } -addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public); - return "type "+s+" is "+s2+";"; +if (s2.contains("#")) { + VhdlDocGen::deleteAllChars(s2,'#'); + tmpEntry->spec=VhdlDocGen::RECORD; + tmpEntry->type=s2.data(); + //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::RECORD,0,s2.data(),Public); + } + else if (s2.contains("%")) { + VhdlDocGen::deleteAllChars(s2,'%'); + tmpEntry->spec=VhdlDocGen::UNITS; + tmpEntry->type=s2.data(); + //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,s2.data(),s2.data(),Public); + } + else { + tmpEntry->spec=VhdlDocGen::TYPE; + tmpEntry->type=s2.data(); + //addVhdlType(s.data(),getLine(TYPE_T),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,s2.data(),Public); + } + tmpEntry=0; + return "type "+s+" is "+s2+";"; assert(false); } @@ -7171,6 +7195,10 @@ QCString VhdlParser::physical_type_definition() {QCString s,s1,s2;if (!hasError) } if (!hasError) { +addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,0,Public); + } + if (!hasError) { + while (!hasError) { switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) { case BASIC_IDENTIFIER: @@ -7185,10 +7213,6 @@ QCString VhdlParser::physical_type_definition() {QCString s,s1,s2;if (!hasError) s1 = secondary_unit_declaration(); } - if (!hasError) { - -s2+=s1;s2+="#"; - } } end_label_31: ; @@ -7220,10 +7244,7 @@ s2+=s1;s2+="#"; } } -current->args=s2; - current->args.prepend("units"); - current->spec=VhdlDocGen::UNITS; - return s2; +return s+"%"; assert(false); } @@ -8352,7 +8373,7 @@ return s; } if (!hasError) { -s+=" ";s+=s1;return s; +return s+" "+s1+"%"; } break; @@ -8407,7 +8428,10 @@ QCString VhdlParser::secondary_unit_declaration() {QCString s,s1;if (!hasError) jj_consume_token(SEMI_T); } -return s+"="+s1; +//printf("\n %s %s [%d]",s.data(),s1.data(),getLine()); + addVhdlType(s.data(),getLine(),Entry::VARIABLE_SEC,VhdlDocGen::UNITS,0,s1.data(),Public); + + return s+"="+s1; assert(false); } |