diff options
-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 | |