aboutsummaryrefslogtreecommitdiffstats
path: root/cparser/Lexer.mll
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2014-12-29 13:09:59 +0100
committerXavier Leroy <xavier.leroy@inria.fr>2014-12-29 13:09:59 +0100
commita4b766d7b50be79a1d983dbe5f234e951ba0aa46 (patch)
tree3ba42ff394c3fe5350607813d0b2eb41a44c981f /cparser/Lexer.mll
parent10120fe4d9980139e44012888a91716df2edf2e0 (diff)
downloadcompcert-kvx-a4b766d7b50be79a1d983dbe5f234e951ba0aa46.tar.gz
compcert-kvx-a4b766d7b50be79a1d983dbe5f234e951ba0aa46.zip
Recognize more of GCC's alternate keywords (e.g. "__signed").
Based on the source of GCC 4.9.2. Plus: reordered keywords in alphabetic order to facilitate comparison.
Diffstat (limited to 'cparser/Lexer.mll')
-rw-r--r--cparser/Lexer.mll45
1 files changed, 24 insertions, 21 deletions
diff --git a/cparser/Lexer.mll b/cparser/Lexer.mll
index 3ab83902..13c1248b 100644
--- a/cparser/Lexer.mll
+++ b/cparser/Lexer.mll
@@ -28,13 +28,34 @@ let init filename channel : Lexing.lexbuf =
Hashtbl.clear lexicon;
List.iter
(fun (key, builder) -> Hashtbl.add lexicon key builder)
- [ ("auto", fun loc -> AUTO loc);
+ [
+ ("_Alignas", fun loc -> ALIGNAS loc);
+ ("_Alignof", fun loc -> ALIGNOF loc);
+ ("_Bool", fun loc -> UNDERSCORE_BOOL loc);
+ ("__alignof", fun loc -> ALIGNOF loc);
+ ("__alignof__", fun loc -> ALIGNOF loc);
+ ("__asm", fun loc -> ASM loc);
+ ("__asm__", fun loc -> ASM loc);
+ ("__attribute", fun loc -> ATTRIBUTE loc);
+ ("__attribute__", fun loc -> ATTRIBUTE loc);
+ ("__builtin_va_arg", fun loc -> BUILTIN_VA_ARG loc);
+ ("__const", fun loc -> CONST loc);
+ ("__const__", fun loc -> CONST loc);
+ ("__inline", fun loc -> INLINE loc);
+ ("__inline__", fun loc -> INLINE loc);
+ ("__packed__", fun loc -> PACKED loc);
+ ("__restrict", fun loc -> RESTRICT loc);
+ ("__restrict__", fun loc -> RESTRICT loc);
+ ("__signed", fun loc -> SIGNED loc);
+ ("__signed__", fun loc -> SIGNED loc);
+ ("__volatile", fun loc -> VOLATILE loc);
+ ("__volatile__", fun loc -> VOLATILE loc);
+ ("asm", fun loc -> ASM loc);
+ ("auto", fun loc -> AUTO loc);
("break", fun loc -> BREAK loc);
("case", fun loc -> CASE loc);
("char", fun loc -> CHAR loc);
("const", fun loc -> CONST loc);
- ("__const", fun loc -> CONST loc);
- ("__const__", fun loc -> CONST loc);
("continue", fun loc -> CONTINUE loc);
("default", fun loc -> DEFAULT loc);
("do", fun loc -> DO loc);
@@ -47,14 +68,10 @@ let init filename channel : Lexing.lexbuf =
("goto", fun loc -> GOTO loc);
("if", fun loc -> IF loc);
("inline", fun loc -> INLINE loc);
- ("__inline", fun loc -> INLINE loc);
- ("__inline__", fun loc -> INLINE loc);
("int", fun loc -> INT loc);
("long", fun loc -> LONG loc);
("register", fun loc -> REGISTER loc);
("restrict", fun loc -> RESTRICT loc);
- ("__restrict", fun loc -> RESTRICT loc);
- ("__restrict__", fun loc -> RESTRICT loc);
("return", fun loc -> RETURN loc);
("short", fun loc -> SHORT loc);
("signed", fun loc -> SIGNED loc);
@@ -67,21 +84,7 @@ let init filename channel : Lexing.lexbuf =
("unsigned", fun loc -> UNSIGNED loc);
("void", fun loc -> VOID loc);
("volatile", fun loc -> VOLATILE loc);
- ("__volatile", fun loc -> VOLATILE loc);
- ("__volatile__", fun loc -> VOLATILE loc);
("while", fun loc -> WHILE loc);
- ("_Alignas", fun loc -> ALIGNAS loc);
- ("_Alignof", fun loc -> ALIGNOF loc);
- ("__alignof", fun loc -> ALIGNOF loc);
- ("__alignof__", fun loc -> ALIGNOF loc);
- ("__attribute", fun loc -> ATTRIBUTE loc);
- ("__attribute__", fun loc -> ATTRIBUTE loc);
- ("_Bool", fun loc -> UNDERSCORE_BOOL loc);
- ("__builtin_va_arg", fun loc -> BUILTIN_VA_ARG loc);
- ("__packed__", fun loc -> PACKED loc);
- ("__asm__", fun loc -> ASM loc);
- ("__asm", fun loc -> ASM loc);
- ("asm", fun loc -> ASM loc);
];
push_context := begin fun () -> contexts := []::!contexts end;