summaryrefslogtreecommitdiffstats
path: root/src/vhdlscanner.l
diff options
context:
space:
mode:
Diffstat (limited to 'src/vhdlscanner.l')
-rw-r--r--src/vhdlscanner.l27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/vhdlscanner.l b/src/vhdlscanner.l
index cedf780..073e0a1 100644
--- a/src/vhdlscanner.l
+++ b/src/vhdlscanner.l
@@ -417,6 +417,7 @@ static void parseFunctionProto()
VhdlDocGen::parseFuncProto(qcs.data(),ql,name,ret);
//printf("parseFuncProto(%s)=%s,%s\n",qcs.data(),name.data(),ret.data());
+ VhdlDocGen::deleteAllChars(name,';');
current->name=name;
current->startLine=iFuncLine;
current->bodyLine=iFuncLine;
@@ -639,6 +640,11 @@ BRACECLOSE [)]{1}
ALLID [^;()\t ]
+/* VHDL 2001 */
+ENDPROTECTED ("end"{BR}+"protected"{BR}+{NAME}{BR}*";")|("end"{BR}+"protected"{BR}*";")
+ENDPROTECEDBODY "end"{BR}+"protected"{BR}+"body"{BR}+{NAME}
+
+
%option noyywrap
/* language parsing states */
@@ -661,6 +667,12 @@ ALLID [^;()\t ]
%%
+<Start>{ENDPROTECTED}|{ENDPROTECEDBODY} {
+ lineCount();
+}
+
+
+
<Start>{CONFIG} { // found configuration
QCString qcs(vhdlscanYYtext);
@@ -986,6 +998,21 @@ ALLID [^;()\t ]
BEGIN(ParseType);
}
+
+<ParseType>("is"){BR}+("protected"){BR}+("body") {lineCount(); BEGIN(Start); }
+
+<ParseType>("is"){BR}+("protected"){BR}+ {
+ lineCount();
+ current->section=Entry::VARIABLE_SEC;
+ current->spec=VhdlDocGen::TYPE;
+ current->type="protected";
+ newEntry();
+ BEGIN(Start);
+}
+
+
+
+
<ParseType>("is"){BR}*("record") { // find record
lineCount();
if (isFunc)