diff options
author | June McEnroe <june@causal.agency> | 2020-12-29 17:13:14 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-12-29 17:13:14 -0500 |
commit | 034c35a61d97bf7817707e044b2f159a7f517c27 (patch) | |
tree | eb39b71e402d610ba3de6d28532159606a7b7396 | |
parent | Match function-like macro definitions as IdentifierTag (diff) | |
download | src-034c35a61d97bf7817707e044b2f159a7f517c27.tar.gz src-034c35a61d97bf7817707e044b2f159a7f517c27.zip |
Match C type declarations as IdentifierTag
-rw-r--r-- | bin/hilex/c.l | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/bin/hilex/c.l b/bin/hilex/c.l index 29988c3f..1eec5f31 100644 --- a/bin/hilex/c.l +++ b/bin/hilex/c.l @@ -22,6 +22,7 @@ %} %s MacroLine MacroInclude MacroDefine +%s TypeDecl %x CharLiteral StringLiteral ident [_[:alpha:]][_[:alnum:]]* @@ -78,6 +79,19 @@ sizeof|(_A|alignof) { return Number; } +enum|struct|typedef|union { + BEGIN(TypeDecl); + return Keyword; +} +<TypeDecl>{ident}/[[:space:]]*("{"|"(") { + BEGIN(pop); + return IdentifierTag; +} +<TypeDecl>. { + BEGIN(pop); + REJECT; +} + auto|break|case|const|continue|default|do|else|enum|extern|for|goto|if|inline | register|restrict|return|static|struct|switch|typedef|union|volatile|while | (_A|a)lignas|_Atomic|_Generic|(_N|n)oreturn|(_S|s)tatic_assert | |