@@ -207,19 +207,51 @@ private function hLoadMacro _
207207 case FB_TK_STMTSEP
208208 if ( not hasParens ) then
209209 readdchar = CHAR_COLON
210- prntcnt = 0
210+ if ( prntcnt > 0 ) then
211+ prntcnt -= 1
212+ end if
211213 exit do
212214 end if
213215
214216 case FB_TK_EOL, FB_TK_EOF
215217 if ( hasParens ) then
216218 hReportMacroError( s, FB_ERRMSG_EXPECTEDRPRNT )
219+ prntcnt = 0
217220 else
221+ if ( prntcnt > 0 ) then
222+ prntcnt -= 1
223+ end if
218224 readdchar = iif(t.id = FB_TK_EOF, 0 , CHAR_LF)
219225 end if
220- prntcnt = 0
221226 exit do
222227
228+ case FB_TK_COMMENT
229+ if ( hasParens ) then
230+ if ( argtb ) then
231+ if ( argtb->count = 0 ) then
232+ argtb->count = 1
233+ end if
234+ end if
235+ else
236+ do
237+ lexSkipToken( LEX_FLAGS or LEXCHECK_NOMULTILINECOMMENT )
238+
239+ select case lexGetToken( LEX_FLAGS )
240+ case FB_TK_EOL, FB_TK_EOF
241+ exit do
242+ end select
243+ loop
244+
245+ lexSkipToken( LEX_FLAGS or LEXCHECK_NOMULTILINECOMMENT )
246+
247+ readdchar = iif(t.id = FB_TK_EOF, 0 , CHAR_LF)
248+ if ( prntcnt > 0 ) then
249+ prntcnt -= 1
250+ end if
251+
252+ exit do
253+ end if
254+
223255 case CHAR_SPACE, CHAR_TAB
224256
225257 case else
@@ -644,19 +676,51 @@ private function hLoadMacroW _
644676 case FB_TK_STMTSEP
645677 if ( not hasParens ) then
646678 readdchar = CHAR_COLON
647- prntcnt = 0
679+ if ( prntcnt > 0 ) then
680+ prntcnt -= 1
681+ end if
648682 exit do
649683 end if
650684
651685 case FB_TK_EOL, FB_TK_EOF
652686 if ( hasParens ) then
653687 hReportMacroError( s, FB_ERRMSG_EXPECTEDRPRNT )
688+ prntcnt = 0
654689 else
690+ if ( prntcnt > 0 ) then
691+ prntcnt -= 1
692+ end if
655693 readdchar = iif(t.id = FB_TK_EOF, 0 , CHAR_LF)
656694 end if
657- prntcnt = 0
658695 exit do
659696
697+ case FB_TK_COMMENT
698+ if ( hasParens ) then
699+ if ( argtb ) then
700+ if ( argtb->count = 0 ) then
701+ argtb->count = 1
702+ end if
703+ end if
704+ else
705+ do
706+ lexSkipToken( LEX_FLAGS or LEXCHECK_NOMULTILINECOMMENT )
707+
708+ select case lexGetToken( LEX_FLAGS )
709+ case FB_TK_EOL, FB_TK_EOF
710+ exit do
711+ end select
712+ loop
713+
714+ lexSkipToken( LEX_FLAGS or LEXCHECK_NOMULTILINECOMMENT)
715+
716+ readdchar = iif(t.id = FB_TK_EOF, 0 , CHAR_LF)
717+ if ( prntcnt > 0 ) then
718+ prntcnt -= 1
719+ end if
720+
721+ exit do
722+ end if
723+
660724 case CHAR_SPACE, CHAR_TAB
661725
662726 case else
0 commit comments