glcpp: Ignore junk tokens at end of #ifdef/#ifndef (with warning)

Both nVidia's compiler and GCC accept this.
Fixes CorrectPreprocess11.frag.
diff --git a/glcpp/glcpp-parse.y b/glcpp/glcpp-parse.y
index c70370a..035a5c8 100644
--- a/glcpp/glcpp-parse.y
+++ b/glcpp/glcpp-parse.y
@@ -232,12 +232,12 @@
 		_token_list_append_list (expanded, $2);
 		glcpp_parser_lex_from (parser, expanded);
 	}
-|	HASH_IFDEF IDENTIFIER NEWLINE {
+|	HASH_IFDEF IDENTIFIER junk NEWLINE {
 		macro_t *macro = hash_table_find (parser->defines, $2);
 		talloc_free ($2);
 		_glcpp_parser_skip_stack_push_if (parser, & @1, macro != NULL);
 	}
-|	HASH_IFNDEF IDENTIFIER NEWLINE {
+|	HASH_IFNDEF IDENTIFIER junk NEWLINE {
 		macro_t *macro = hash_table_find (parser->defines, $2);
 		talloc_free ($2);
 		_glcpp_parser_skip_stack_push_if (parser, & @1, macro == NULL);
@@ -377,6 +377,12 @@
 |	pp_tokens
 ;
 
+junk:
+	/* empty */
+|	pp_tokens {
+		glcpp_warning(&@1, parser, "extra tokens at end of directive");
+	}
+
 pp_tokens:
 	preprocessing_token {
 		parser->space_tokens = 1;