summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2000-08-19 12:15:48 +0000
committerBruno Haible <bruno@clisp.org>2000-08-19 12:15:48 +0000
commit674cd5fcf817ea32a4fb8335098a4b3c600d91d3 (patch)
tree3dfde3d8cd03f4e840af462c08cbf54e3228fa87
parentb536eb91a4ad78454118636097b42835ef723a9f (diff)
downloadgperf-674cd5fcf817ea32a4fb8335098a4b3c600d91d3.tar.gz
Update from gcc-2.95.2.
-rw-r--r--tests/c-parse.gperf42
-rw-r--r--tests/chill.gperf158
-rw-r--r--tests/cplusplus.gperf111
-rw-r--r--tests/gplus.gperf76
-rw-r--r--tests/java.gperf80
-rw-r--r--tests/objc.gperf64
6 files changed, 450 insertions, 81 deletions
diff --git a/tests/c-parse.gperf b/tests/c-parse.gperf
index d11788c..888eee9 100644
--- a/tests/c-parse.gperf
+++ b/tests/c-parse.gperf
@@ -1,27 +1,53 @@
%{
-/* Command-line: gperf -p -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,$ c-parse.gperf */
+/* Command-line: gperf -L KR-C -F ', 0, 0' -p -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,$ c-parse.gperf */
%}
-struct resword { char *name; short token; enum rid rid; };
+struct resword { const char *name; short token; enum rid rid; };
%%
+@class, CLASS, NORID
+@compatibility_alias, ALIAS, NORID
+@defs, DEFS, NORID
+@encode, ENCODE, NORID
+@end, END, NORID
+@implementation, IMPLEMENTATION, NORID
+@interface, INTERFACE, NORID
+@private, PRIVATE, NORID
+@protected, PROTECTED, NORID
+@protocol, PROTOCOL, NORID
+@public, PUBLIC, NORID
+@selector, SELECTOR, NORID
__alignof, ALIGNOF, NORID
__alignof__, ALIGNOF, NORID
-__asm, ASM, NORID
-__asm__, ASM, NORID
+__asm, ASM_KEYWORD, NORID
+__asm__, ASM_KEYWORD, NORID
__attribute, ATTRIBUTE, NORID
__attribute__, ATTRIBUTE, NORID
+__complex, TYPESPEC, RID_COMPLEX
+__complex__, TYPESPEC, RID_COMPLEX
__const, TYPE_QUAL, RID_CONST
__const__, TYPE_QUAL, RID_CONST
+__extension__, EXTENSION, NORID
+__imag, IMAGPART, NORID
+__imag__, IMAGPART, NORID
__inline, SCSPEC, RID_INLINE
__inline__, SCSPEC, RID_INLINE
+__iterator, SCSPEC, RID_ITERATOR
+__iterator__, SCSPEC, RID_ITERATOR
+__label__, LABEL, NORID
+__real, REALPART, NORID
+__real__, REALPART, NORID
+__restrict, TYPE_QUAL, RID_RESTRICT
+__restrict__, TYPE_QUAL, RID_RESTRICT
__signed, TYPESPEC, RID_SIGNED
__signed__, TYPESPEC, RID_SIGNED
__typeof, TYPEOF, NORID
__typeof__, TYPEOF, NORID
__volatile, TYPE_QUAL, RID_VOLATILE
__volatile__, TYPE_QUAL, RID_VOLATILE
-asm, ASM, NORID
+asm, ASM_KEYWORD, NORID
auto, SCSPEC, RID_AUTO
break, BREAK, NORID
+bycopy, TYPE_QUAL, RID_BYCOPY
+byref, TYPE_QUAL, RID_BYREF
case, CASE, NORID
char, TYPESPEC, RID_CHAR
const, TYPE_QUAL, RID_CONST
@@ -35,11 +61,17 @@ extern, SCSPEC, RID_EXTERN
float, TYPESPEC, RID_FLOAT
for, FOR, NORID
goto, GOTO, NORID
+id, OBJECTNAME, RID_ID
if, IF, NORID
+in, TYPE_QUAL, RID_IN
+inout, TYPE_QUAL, RID_INOUT
inline, SCSPEC, RID_INLINE
int, TYPESPEC, RID_INT
long, TYPESPEC, RID_LONG
+oneway, TYPE_QUAL, RID_ONEWAY
+out, TYPE_QUAL, RID_OUT
register, SCSPEC, RID_REGISTER
+restrict, TYPE_QUAL, RID_RESTRICT
return, RETURN, NORID
short, TYPESPEC, RID_SHORT
signed, TYPESPEC, RID_SIGNED
diff --git a/tests/chill.gperf b/tests/chill.gperf
new file mode 100644
index 0000000..20d0596
--- /dev/null
+++ b/tests/chill.gperf
@@ -0,0 +1,158 @@
+struct resword {
+ const char *name;
+ short token;
+ enum rid rid;
+ enum toktype { RESERVED, DIRECTIVE, PREDEF } flags;
+};
+extern tree ridpointers [];
+%%
+access, ACCESS, NORID, RESERVED
+after, AFTER, NORID, RESERVED
+all, ALL, NORID, RESERVED
+all_static_off, ALL_STATIC_OFF, NORID, DIRECTIVE
+all_static_on, ALL_STATIC_ON, NORID, DIRECTIVE
+and, AND, NORID, RESERVED
+andif, ANDIF, NORID, RESERVED
+array, ARRAY, NORID, RESERVED
+asm, ASM_KEYWORD, NORID, RESERVED
+assert, ASSERT, NORID, RESERVED
+at, AT, NORID, RESERVED
+based, BASED, NORID, RESERVED
+begin, BEGINTOKEN, NORID, RESERVED
+bin, BIN, NORID, RESERVED
+bit, BOOLS, RID_BOOLS, PREDEF
+body, BODY, NORID, RESERVED
+bools, BOOLS, RID_BOOLS, RESERVED
+buffer, BUFFER, NORID, RESERVED
+buffer_code, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+by, BY, NORID, RESERVED
+call, CALL, NORID, RESERVED
+case, CASE, NORID, RESERVED
+cause, CAUSE, NORID, RESERVED
+ccitt_os, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+chars, CHARS, NORID, RESERVED
+context, CONTEXT, NORID, RESERVED
+continue, CONTINUE, NORID, RESERVED
+cycle, CYCLE, NORID, RESERVED
+dcl, DCL, NORID, RESERVED
+debug_lines, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+debug_symbols, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+debug_types, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+delay, DELAY, NORID, RESERVED
+do, DO, NORID, RESERVED
+down, DOWN, NORID, RESERVED
+dynamic, DYNAMIC, RID_DYNAMIC, RESERVED
+else, ELSE, NORID, RESERVED
+elsif, ELSIF, NORID, RESERVED
+empty_off, EMPTY_OFF, NORID, DIRECTIVE
+empty_on, EMPTY_ON, NORID, DIRECTIVE
+end, END, NORID, RESERVED
+esac, ESAC, NORID, RESERVED
+even, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+event, EVENT, NORID, RESERVED
+event_code, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+ever, EVER, NORID, RESERVED
+exceptions, EXCEPTIONS, NORID, RESERVED
+exit, EXIT, NORID, RESERVED
+extra_const_seg, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+far, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+fi, FI, NORID, RESERVED
+for, FOR, NORID, RESERVED
+forbid, FORBID, NORID, RESERVED
+general, GENERAL, NORID, RESERVED
+generate_all_set_names, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+generate_set_names, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+goto, GOTO, NORID, RESERVED
+grant, GRANT, NORID, RESERVED
+grant_file_size, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+if, IF, NORID, RESERVED
+in, IN, RID_IN, RESERVED
+init, INIT, NORID, RESERVED
+inline, INLINE, RID_INLINE, RESERVED
+inout, PARAMATTR, RID_INOUT, RESERVED
+large, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+list, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+loc, LOC, NORID, RESERVED
+make_publics_for_discrete_syns, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+medium, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+mod, MOD, NORID, RESERVED
+module, MODULE, NORID, RESERVED
+multiple_const_segs, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+multiple_data_segs, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+newmode, NEWMODE, NORID, RESERVED
+nolist, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+no_overlap_check, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+nonref, NONREF, NORID, RESERVED
+nopack, NOPACK, NORID, RESERVED
+not, NOT, NORID, RESERVED
+od, OD, NORID, RESERVED
+of, OF, NORID, RESERVED
+on, ON, NORID, RESERVED
+only_for_simulation, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+only_for_target, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+optimize, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+optimize_runtime, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+optimization_window, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+or, OR, NORID, RESERVED
+orif, ORIF, NORID, RESERVED
+out, PARAMATTR, RID_OUT, RESERVED
+pack, PACK, NORID, RESERVED
+page, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+pos, POS, NORID, RESERVED
+powerset, POWERSET, NORID, RESERVED
+prefixed, PREFIXED, NORID, RESERVED
+print_o_code, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+print_symbol_table, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+priority, PRIORITY, NORID, RESERVED
+proc, PROC, NORID, RESERVED
+process, PROCESS, NORID, RESERVED
+process_type, PROCESS_TYPE_TOKEN, NORID, DIRECTIVE
+range, RANGE, NORID, RESERVED
+range_off, RANGE_OFF, NORID, DIRECTIVE
+range_on, RANGE_ON, NORID, DIRECTIVE
+read, READ, RID_READ, RESERVED
+receive, RECEIVE, NORID, RESERVED
+recursive, RECURSIVE, NORID, RESERVED
+reentrant, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+reentrant_all, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+ref, REF, NORID, RESERVED
+region, REGION, NORID, RESERVED
+rem, REM, NORID, RESERVED
+remote, REMOTE, NORID, RESERVED
+result, RESULT, NORID, RESERVED
+return, RETURN, NORID, RESERVED
+returns, RETURNS, NORID, RESERVED
+row, ROW, NORID, RESERVED
+seize, SEIZE, NORID, RESERVED
+send, SEND, NORID, RESERVED
+send_buffer_default_priority, SEND_BUFFER_DEFAULT_PRIORITY, NORID, DIRECTIVE
+send_signal_default_priority, SEND_SIGNAL_DEFAULT_PRIORITY, NORID, DIRECTIVE
+set, SET, NORID, RESERVED
+short_pred_succ, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+signal, SIGNAL, NORID, RESERVED
+signal_code, SIGNAL_CODE, NORID, DIRECTIVE
+signal_max_length, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+simple, SIMPLE, NORID, RESERVED
+small, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+spec, SPEC, NORID, RESERVED
+start, START, NORID, RESERVED
+state_routine, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+static, STATIC, NORID, RESERVED
+step, STEP, NORID, RESERVED
+stop, STOP, NORID, RESERVED
+struct, STRUCT, NORID, RESERVED
+support_causing_address, IGNORED_DIRECTIVE, NORID, DIRECTIVE
+syn, SYN, NORID, RESERVED
+synmode, SYNMODE, NORID, RESERVED
+text, TEXT, NORID, RESERVED
+then, THEN, NORID, RESERVED
+this, THIS, NORID, RESERVED
+timeout, TIMEOUT, NORID, RESERVED
+to, TO, NORID, RESERVED
+up, UP, NORID, RESERVED
+use_seize_file, USE_SEIZE_FILE, NORID, DIRECTIVE
+use_seize_file_restricted, USE_SEIZE_FILE_RESTRICTED, NORID, DIRECTIVE
+varying, VARYING, NORID, RESERVED
+while, WHILE, NORID, RESERVED
+with, WITH, NORID, RESERVED
+xor, XOR, NORID, RESERVED
diff --git a/tests/cplusplus.gperf b/tests/cplusplus.gperf
new file mode 100644
index 0000000..1e621c4
--- /dev/null
+++ b/tests/cplusplus.gperf
@@ -0,0 +1,111 @@
+%{
+/* Command-line: gperf -L KR-C -F ', 0, 0' -p -j1 -g -o -t -N is_reserved_word -k1,4,$,7 gplus.gperf */
+%}
+struct resword { const char *name; short token; enum rid rid;};
+%%
+__alignof, ALIGNOF, NORID
+__alignof__, ALIGNOF, NORID
+__asm, ASM_KEYWORD, NORID
+__asm__, ASM_KEYWORD, NORID
+__attribute, ATTRIBUTE, NORID
+__attribute__, ATTRIBUTE, NORID
+__complex, TYPESPEC, RID_COMPLEX
+__complex__, TYPESPEC, RID_COMPLEX
+__const, CV_QUALIFIER, RID_CONST
+__const__, CV_QUALIFIER, RID_CONST
+__extension__, EXTENSION, NORID
+__imag, IMAGPART, NORID
+__imag__, IMAGPART, NORID
+__inline, SCSPEC, RID_INLINE
+__inline__, SCSPEC, RID_INLINE
+__label__, LABEL, NORID
+__null, CONSTANT, RID_NULL
+__real, REALPART, NORID
+__real__, REALPART, NORID
+__restrict, CV_QUALIFIER, RID_RESTRICT
+__restrict__, CV_QUALIFIER, RID_RESTRICT
+__signature__, AGGR, RID_SIGNATURE /* Extension */,
+__signed, TYPESPEC, RID_SIGNED
+__signed__, TYPESPEC, RID_SIGNED
+__sigof__, SIGOF, NORID /* Extension */,
+__typeof, TYPEOF, NORID
+__typeof__, TYPEOF, NORID
+__volatile, CV_QUALIFIER, RID_VOLATILE
+__volatile__, CV_QUALIFIER, RID_VOLATILE
+__wchar_t, TYPESPEC, RID_WCHAR /* Unique to ANSI C++ */,
+asm, ASM_KEYWORD, NORID,
+and, ANDAND, NORID,
+and_eq, ASSIGN, NORID,
+auto, SCSPEC, RID_AUTO,
+bitand, '&', NORID,
+bitor, '|', NORID,
+bool, TYPESPEC, RID_BOOL,
+break, BREAK, NORID,
+case, CASE, NORID,
+catch, CATCH, NORID,
+char, TYPESPEC, RID_CHAR,
+class, AGGR, RID_CLASS,
+compl, '~', NORID,
+const, CV_QUALIFIER, RID_CONST,
+const_cast, CONST_CAST, NORID,
+continue, CONTINUE, NORID,
+default, DEFAULT, NORID,
+delete, DELETE, NORID,
+do, DO, NORID,
+double, TYPESPEC, RID_DOUBLE,
+dynamic_cast, DYNAMIC_CAST, NORID,
+else, ELSE, NORID,
+enum, ENUM, NORID,
+explicit, SCSPEC, RID_EXPLICIT,
+export, SCSPEC, RID_EXPORT,
+extern, SCSPEC, RID_EXTERN,
+false, CXX_FALSE, NORID,
+float, TYPESPEC, RID_FLOAT,
+for, FOR, NORID,
+friend, SCSPEC, RID_FRIEND,
+goto, GOTO, NORID,
+if, IF, NORID,
+inline, SCSPEC, RID_INLINE,
+int, TYPESPEC, RID_INT,
+long, TYPESPEC, RID_LONG,
+mutable, SCSPEC, RID_MUTABLE,
+namespace, NAMESPACE, NORID,
+new, NEW, NORID,
+not, '!', NORID,
+not_eq, EQCOMPARE, NORID,
+operator, OPERATOR, NORID,
+or, OROR, NORID,
+or_eq, ASSIGN, NORID,
+private, VISSPEC, RID_PRIVATE,
+protected, VISSPEC, RID_PROTECTED,
+public, VISSPEC, RID_PUBLIC,
+register, SCSPEC, RID_REGISTER,
+reinterpret_cast, REINTERPRET_CAST, NORID,
+return, RETURN_KEYWORD, NORID,
+short, TYPESPEC, RID_SHORT,
+signature, AGGR, RID_SIGNATURE /* Extension */,
+signed, TYPESPEC, RID_SIGNED,
+sigof, SIGOF, NORID /* Extension */,
+sizeof, SIZEOF, NORID,
+static, SCSPEC, RID_STATIC,
+static_cast, STATIC_CAST, NORID,
+struct, AGGR, RID_RECORD,
+switch, SWITCH, NORID,
+template, TEMPLATE, RID_TEMPLATE,
+this, THIS, NORID,
+throw, THROW, NORID,
+true, CXX_TRUE, NORID,
+try, TRY, NORID,
+typedef, SCSPEC, RID_TYPEDEF,
+typename, TYPENAME_KEYWORD, NORID,
+typeid, TYPEID, NORID,
+typeof, TYPEOF, NORID,
+union, AGGR, RID_UNION,
+unsigned, TYPESPEC, RID_UNSIGNED,
+using, USING, NORID,
+virtual, SCSPEC, RID_VIRTUAL,
+void, TYPESPEC, RID_VOID,
+volatile, CV_QUALIFIER, RID_VOLATILE,
+while, WHILE, NORID,
+xor, '^', NORID,
+xor_eq, ASSIGN, NORID,
diff --git a/tests/gplus.gperf b/tests/gplus.gperf
deleted file mode 100644
index 4a93315..0000000
--- a/tests/gplus.gperf
+++ /dev/null
@@ -1,76 +0,0 @@
-%{
-/* Command-line: gperf -p -j1 -g -o -t -N is_reserved_word -k1,4,$ gplus.gperf */
-%}
-struct resword { char *name; short token; enum rid rid;};
-%%
-__alignof, ALIGNOF, NORID
-__alignof__, ALIGNOF, NORID
-__asm, ASM, NORID
-__asm__, ASM, NORID
-__attribute, ATTRIBUTE, NORID
-__attribute__, ATTRIBUTE, NORID
-__const, TYPE_QUAL, RID_CONST
-__const__, TYPE_QUAL, RID_CONST
-__inline, SCSPEC, RID_INLINE
-__inline__, SCSPEC, RID_INLINE
-__signed, TYPESPEC, RID_SIGNED
-__signed__, TYPESPEC, RID_SIGNED
-__typeof, TYPEOF, NORID
-__typeof__, TYPEOF, NORID
-__volatile, TYPE_QUAL, RID_VOLATILE
-__volatile__, TYPE_QUAL, RID_VOLATILE
-all, ALL, NORID /* Extension */,
-except, EXCEPT, NORID /* Extension */,
-exception, AGGR, RID_EXCEPTION /* Extension */,
-raise, RAISE, NORID /* Extension */,
-raises, RAISES, NORID /* Extension */,
-reraise, RERAISE, NORID /* Extension */,
-try, TRY, NORID /* Extension */,
-asm, ASM, NORID,
-auto, SCSPEC, RID_AUTO,
-break, BREAK, NORID,
-case, CASE, NORID,
-catch, CATCH, NORID,
-char, TYPESPEC, RID_CHAR,
-class, AGGR, RID_CLASS,
-const, TYPE_QUAL, RID_CONST,
-continue, CONTINUE, NORID,
-default, DEFAULT, NORID,
-delete, DELETE, NORID,
-do, DO, NORID,
-double, TYPESPEC, RID_DOUBLE,
-dynamic, DYNAMIC, NORID,
-else, ELSE, NORID,
-enum, ENUM, NORID,
-extern, SCSPEC, RID_EXTERN,
-float, TYPESPEC, RID_FLOAT,
-for, FOR, NORID,
-friend, SCSPEC, RID_FRIEND,
-goto, GOTO, NORID,
-if, IF, NORID,
-inline, SCSPEC, RID_INLINE,
-int, TYPESPEC, RID_INT,
-long, TYPESPEC, RID_LONG,
-new, NEW, NORID,
-operator, OPERATOR, NORID,
-overload, OVERLOAD, NORID,
-private, PRIVATE, NORID,
-protected, PROTECTED, NORID,
-public, PUBLIC, NORID,
-register, SCSPEC, RID_REGISTER,
-return, RETURN, NORID,
-short, TYPESPEC, RID_SHORT,
-signed, TYPESPEC, RID_SIGNED,
-sizeof, SIZEOF, NORID,
-static, SCSPEC, RID_STATIC,
-struct, AGGR, RID_RECORD,
-switch, SWITCH, NORID,
-this, THIS, NORID,
-typedef, SCSPEC, RID_TYPEDEF,
-typeof, TYPEOF, NORID,
-union, AGGR, RID_UNION,
-unsigned, TYPESPEC, RID_UNSIGNED,
-virtual, SCSPEC, RID_VIRTUAL,
-void, TYPESPEC, RID_VOID,
-volatile, TYPE_QUAL, RID_VOLATILE,
-while, WHILE, NORID,
diff --git a/tests/java.gperf b/tests/java.gperf
new file mode 100644
index 0000000..0e05876
--- /dev/null
+++ b/tests/java.gperf
@@ -0,0 +1,80 @@
+%{
+/* Keyword definition for the GNU compiler for the Java(TM) language.
+ Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+ Contributed by Alexandre Petit-Bianco (apbianco@cygnus.com)
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+Java and all Java-based marks are trademarks or registered trademarks
+of Sun Microsystems, Inc. in the United States and other countries.
+The Free Software Foundation is independent of Sun Microsystems, Inc. */
+
+%}
+struct java_keyword { const char *name; int token; };
+%%
+abstract, ABSTRACT_TK
+default, DEFAULT_TK
+if, IF_TK
+private, PRIVATE_TK
+throw, THROW_TK
+boolean, BOOLEAN_TK
+do, DO_TK
+implements, IMPLEMENTS_TK
+protected, PROTECTED_TK
+throws, THROWS_TK
+break, BREAK_TK
+double, DOUBLE_TK
+import, IMPORT_TK
+public, PUBLIC_TK
+transient, TRANSIENT_TK
+byte, BYTE_TK
+else, ELSE_TK
+instanceof, INSTANCEOF_TK
+return, RETURN_TK
+try, TRY_TK
+case, CASE_TK
+extends, EXTENDS_TK
+int, INT_TK
+short, SHORT_TK
+void, VOID_TK
+catch, CATCH_TK
+final, FINAL_TK
+interface, INTERFACE_TK
+static, STATIC_TK
+volatile, VOLATILE_TK
+char, CHAR_TK
+finally, FINALLY_TK
+long, LONG_TK
+super, SUPER_TK
+while, WHILE_TK
+class, CLASS_TK
+float, FLOAT_TK
+native, NATIVE_TK
+switch, SWITCH_TK
+const, CONST_TK
+for, FOR_TK
+new, NEW_TK
+synchronized, SYNCHRONIZED_TK
+continue, CONTINUE_TK
+goto, GOTO_TK
+package, PACKAGE_TK
+this, THIS_TK
+# true, false and null aren't keyword. But we match them easily this way
+true, TRUE_TK
+false, FALSE_TK
+null, NULL_TK
diff --git a/tests/objc.gperf b/tests/objc.gperf
new file mode 100644
index 0000000..407459f
--- /dev/null
+++ b/tests/objc.gperf
@@ -0,0 +1,64 @@
+%{
+/* Command-line: gperf -p -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,$ objc.gperf */
+%}
+struct resword { char *name; short token; enum rid rid; };
+%%
+@defs, DEFS, NORID
+@encode, ENCODE, NORID
+@end, END, NORID
+@implementation, IMPLEMENTATION, NORID
+@interface, INTERFACE, NORID
+@public, PUBLIC, NORID
+@selector, SELECTOR, NORID
+__alignof, ALIGNOF, NORID
+__alignof__, ALIGNOF, NORID
+__asm, ASM, NORID
+__asm__, ASM, NORID
+__attribute, ATTRIBUTE, NORID
+__attribute__, ATTRIBUTE, NORID
+__const, TYPE_QUAL, RID_CONST
+__const__, TYPE_QUAL, RID_CONST
+__extension__, EXTENSION, NORID
+__inline, SCSPEC, RID_INLINE
+__inline__, SCSPEC, RID_INLINE
+__signed, TYPESPEC, RID_SIGNED
+__signed__, TYPESPEC, RID_SIGNED
+__typeof, TYPEOF, NORID
+__typeof__, TYPEOF, NORID
+__volatile, TYPE_QUAL, RID_VOLATILE
+__volatile__, TYPE_QUAL, RID_VOLATILE
+asm, ASM, NORID
+auto, SCSPEC, RID_AUTO
+break, BREAK, NORID
+case, CASE, NORID
+char, TYPESPEC, RID_CHAR
+const, TYPE_QUAL, RID_CONST
+continue, CONTINUE, NORID
+default, DEFAULT, NORID
+do, DO, NORID
+double, TYPESPEC, RID_DOUBLE
+else, ELSE, NORID
+enum, ENUM, NORID
+extern, SCSPEC, RID_EXTERN
+float, TYPESPEC, RID_FLOAT
+for, FOR, NORID
+goto, GOTO, NORID
+if, IF, NORID
+inline, SCSPEC, RID_INLINE
+int, TYPESPEC, RID_INT
+long, TYPESPEC, RID_LONG
+register, SCSPEC, RID_REGISTER
+return, RETURN, NORID
+short, TYPESPEC, RID_SHORT
+signed, TYPESPEC, RID_SIGNED
+sizeof, SIZEOF, NORID
+static, SCSPEC, RID_STATIC
+struct, STRUCT, NORID
+switch, SWITCH, NORID
+typedef, SCSPEC, RID_TYPEDEF
+typeof, TYPEOF, NORID
+union, UNION, NORID
+unsigned, TYPESPEC, RID_UNSIGNED
+void, TYPESPEC, RID_VOID
+volatile, TYPE_QUAL, RID_VOLATILE
+while, WHILE, NORID