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 | 68712bc1e1a9d3711370290345987c39ea06a89c (patch) | |
tree | 84c8a77d7e4b37762ac12e7f1425206c34e6ad17 | |
parent | Match function-like macro definitions as IdentifierTag (diff) | |
download | src-68712bc1e1a9d3711370290345987c39ea06a89c.tar.gz src-68712bc1e1a9d3711370290345987c39ea06a89c.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 3b0bcab3..c5dc31ff 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 | |