summaryrefslogtreecommitdiff
path: root/scan.l
diff options
context:
space:
mode:
authorVern Paxson <vern@ee.lbl.gov>1993-04-05 20:35:51 +0000
committerVern Paxson <vern@ee.lbl.gov>1993-04-05 20:35:51 +0000
commit220517426c41698cc8f36a4d1018168e227cfcce (patch)
tree178b771cd58d03528bc60d113f01a558c7844d2e /scan.l
parente196c113e4e85ea93946ab757f71027f59904eea (diff)
downloadflex-git-220517426c41698cc8f36a4d1018168e227cfcce.tar.gz
Fixed subtle problems regarding '*'s in comments
%pointer/%array match entire lines
Diffstat (limited to 'scan.l')
-rw-r--r--scan.l20
1 files changed, 14 insertions, 6 deletions
diff --git a/scan.l b/scan.l
index 7083c1e..88add7b 100644
--- a/scan.l
+++ b/scan.l
@@ -76,7 +76,7 @@ NOT_WS [^ \t\f\n]
NL \n|\r\n|\n\r
NAME [a-z_][a-z_0-9-]*
-NOT_NAME [^a-z_\n]+
+NOT_NAME [^a-z_*\n]+
SCNAME {NAME}
@@ -113,8 +113,8 @@ CCL_CHAR [^\\\n\]]|{ESCSEQ}
return SECTEND;
}
-^"%pointer" yytext_is_array = false;
-^"%array" yytext_is_array = true;
+^"%pointer".*\n ++linenum; yytext_is_array = false;
+^"%array".*\n ++linenum; yytext_is_array = true;
^"%used" {
warn( "%used/%unused have been deprecated" );
@@ -401,6 +401,7 @@ CCL_CHAR [^\\\n\]]|{ESCSEQ}
<BRACEERROR>{NL} synerr( "missing }" ); ++linenum; BEGIN(SECT2);
+<CODEBLOCK_2>"/*" ACTION_ECHO; BEGIN(ACTION_COMMENT);
<PERCENT_BRACE_ACTION,CODEBLOCK_2>{OPTWS}"%}".* bracelevel = 0;
<PERCENT_BRACE_ACTION,CODEBLOCK_2,ACTION>"reject" {
ACTION_ECHO;
@@ -445,10 +446,17 @@ CCL_CHAR [^\\\n\]]|{ESCSEQ}
}
<ACTION>. ACTION_ECHO;
-<ACTION_COMMENT>"*/" ACTION_ECHO; BEGIN(ACTION);
-<ACTION_COMMENT>[^*\n]+ ACTION_ECHO;
+<ACTION_COMMENT>"*/" {
+ ACTION_ECHO;
+ if ( doing_codeblock )
+ BEGIN(CODEBLOCK_2);
+ else
+ BEGIN(ACTION);
+ }
+
<ACTION_COMMENT>"*" ACTION_ECHO;
-<ACTION_COMMENT>{NL} ++linenum; ACTION_ECHO;
+<ACTION_COMMENT>[^*\n]+ ACTION_ECHO;
+<ACTION_COMMENT>[^*\n]*{NL} ++linenum; ACTION_ECHO;
<ACTION_STRING>[^"\\\n]+ ACTION_ECHO;
<ACTION_STRING>\\. ACTION_ECHO;