From 034c35a61d97bf7817707e044b2f159a7f517c27 Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Tue, 29 Dec 2020 17:13:14 -0500 Subject: Match C type declarations as IdentifierTag --- bin/hilex/c.l | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'bin/hilex/c.l') 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; +} +{ident}/[[:space:]]*("{"|"(") { + BEGIN(pop); + return IdentifierTag; +} +. { + 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 | -- cgit 1.4.1