From 9c54e90449677f6ea47dfd5b02d77385f87ade3c Mon Sep 17 00:00:00 2001 From: June McEnroe Date: Tue, 29 Dec 2020 15:05:39 -0500 Subject: Match function-like macro definitions as IdentifierTag --- bin/hilex/c.l | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'bin/hilex/c.l') diff --git a/bin/hilex/c.l b/bin/hilex/c.l index 056867ce..3b0bcab3 100644 --- a/bin/hilex/c.l +++ b/bin/hilex/c.l @@ -21,7 +21,7 @@ #include "hilex.h" %} -%s MacroLine MacroInclude +%s MacroLine MacroInclude MacroDefine %x CharLiteral StringLiteral ident [_[:alpha:]][_[:alnum:]]* @@ -36,6 +36,10 @@ width "*"|[0-9]+ BEGIN(pop = MacroInclude); return Macro; } +^"#"[[:blank:]]*"define" { + BEGIN(pop = MacroDefine); + return Macro; +} ^[#%][[:blank:]]*{ident} { BEGIN(pop = MacroLine); return Macro; @@ -43,7 +47,18 @@ width "*"|[0-9]+ "<"[^>]+">" { return String; } -{ +{ + {ident}/"(" { + BEGIN(pop = MacroLine); + return IdentifierTag; + } + {ident} { + BEGIN(pop = MacroLine); + return Macro; + } +} + +{ "\n" { BEGIN(pop = INITIAL); return Normal; @@ -70,7 +85,7 @@ register|restrict|return|static|struct|switch|typedef|union|volatile|while | return Keyword; } -{ident} { return Macro; } +{ident} { return Macro; } {ident} { return Identifier; } "//"([^\n]|"\\\n")* | @@ -118,7 +133,7 @@ register|restrict|return|static|struct|switch|typedef|union|volatile|while | [^%\\""]+|. { return String; } } -. { return Macro; } +. { return Macro; } .|\n { return Normal; } -- cgit 1.4.1