glsl/glcpp: Drop extra, final newline from most output
authorCarl Worth <cworth@cworth.org>
Fri, 20 Jun 2014 21:58:48 +0000 (14:58 -0700)
committerCarl Worth <cworth@cworth.org>
Tue, 29 Jul 2014 22:11:49 +0000 (15:11 -0700)
The glcpp parser is line-based, so it needs to see a NEWLINE token at the end
of each line. This causes a trick for files that end without a final newline.

Previously, the lexer for glcpp punted in this case by unconditionally
returning a NEWLINE token at end-of-file, (causing most files to have an extra
blank line at the end). Here, we refine this by lexing end-of-file as a
NEWLINE token only if the immediately preceding token was not a NEWLINE token.

The patch is a minor change that only looks huge for two reasons:

1. Almost all glcpp test result ".expected" files are updated to drop
   the extra newline.

2. All return statements from the lexer are adjusted to use a new
   RETURN_TOKEN macro that tracks the last-token-was-a-newline state.

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
130 files changed:
src/glsl/glcpp/glcpp-lex.l
src/glsl/glcpp/glcpp-parse.y
src/glsl/glcpp/glcpp.h
src/glsl/glcpp/tests/000-content-with-spaces.c.expected
src/glsl/glcpp/tests/001-define.c.expected
src/glsl/glcpp/tests/002-define-chain.c.expected
src/glsl/glcpp/tests/003-define-chain-reverse.c.expected
src/glsl/glcpp/tests/004-define-recursive.c.expected
src/glsl/glcpp/tests/005-define-composite-chain.c.expected
src/glsl/glcpp/tests/006-define-composite-chain-reverse.c.expected
src/glsl/glcpp/tests/007-define-composite-recursive.c.expected
src/glsl/glcpp/tests/008-define-empty.c.expected
src/glsl/glcpp/tests/009-undef.c.expected
src/glsl/glcpp/tests/010-undef-re-define.c.expected
src/glsl/glcpp/tests/011-define-func-empty.c.expected
src/glsl/glcpp/tests/012-define-func-no-args.c.expected
src/glsl/glcpp/tests/013-define-func-1-arg-unused.c.expected
src/glsl/glcpp/tests/014-define-func-2-arg-unused.c.expected
src/glsl/glcpp/tests/015-define-object-with-parens.c.expected
src/glsl/glcpp/tests/016-define-func-1-arg.c.expected
src/glsl/glcpp/tests/017-define-func-2-args.c.expected
src/glsl/glcpp/tests/018-define-func-macro-as-parameter.c.expected
src/glsl/glcpp/tests/019-define-func-1-arg-multi.c.expected
src/glsl/glcpp/tests/020-define-func-2-arg-multi.c.expected
src/glsl/glcpp/tests/021-define-func-compose.c.expected
src/glsl/glcpp/tests/022-define-func-arg-with-parens.c.expected
src/glsl/glcpp/tests/023-define-extra-whitespace.c.expected
src/glsl/glcpp/tests/024-define-chain-to-self-recursion.c.expected
src/glsl/glcpp/tests/025-func-macro-as-non-macro.c.expected
src/glsl/glcpp/tests/026-define-func-extra-newlines.c.expected
src/glsl/glcpp/tests/027-define-chain-obj-to-func.c.expected
src/glsl/glcpp/tests/028-define-chain-obj-to-non-func.c.expected
src/glsl/glcpp/tests/029-define-chain-obj-to-func-with-args.c.expected
src/glsl/glcpp/tests/030-define-chain-obj-to-func-compose.c.expected
src/glsl/glcpp/tests/031-define-chain-func-to-func-compose.c.expected
src/glsl/glcpp/tests/032-define-func-self-recurse.c.expected
src/glsl/glcpp/tests/033-define-func-self-compose.c.expected
src/glsl/glcpp/tests/034-define-func-self-compose-non-func.c.expected
src/glsl/glcpp/tests/035-define-func-self-compose-non-func-multi-token-argument.c.expected
src/glsl/glcpp/tests/036-define-func-non-macro-multi-token-argument.c.expected
src/glsl/glcpp/tests/037-finalize-unexpanded-macro.c.expected
src/glsl/glcpp/tests/038-func-arg-with-commas.c.expected
src/glsl/glcpp/tests/039-func-arg-obj-macro-with-comma.c.expected
src/glsl/glcpp/tests/040-token-pasting.c.expected
src/glsl/glcpp/tests/041-if-0.c.expected
src/glsl/glcpp/tests/042-if-1.c.expected
src/glsl/glcpp/tests/043-if-0-else.c.expected
src/glsl/glcpp/tests/044-if-1-else.c.expected
src/glsl/glcpp/tests/045-if-0-elif.c.expected
src/glsl/glcpp/tests/046-if-1-elsif.c.expected
src/glsl/glcpp/tests/047-if-elif-else.c.expected
src/glsl/glcpp/tests/048-if-nested.c.expected
src/glsl/glcpp/tests/049-if-expression-precedence.c.expected
src/glsl/glcpp/tests/050-if-defined.c.expected
src/glsl/glcpp/tests/051-if-relational.c.expected
src/glsl/glcpp/tests/052-if-bitwise.c.expected
src/glsl/glcpp/tests/053-if-divide-and-shift.c.expected
src/glsl/glcpp/tests/054-if-with-macros.c.expected
src/glsl/glcpp/tests/055-define-chain-obj-to-func-parens-in-text.c.expected
src/glsl/glcpp/tests/056-macro-argument-with-comma.c.expected
src/glsl/glcpp/tests/057-empty-arguments.c.expected
src/glsl/glcpp/tests/058-token-pasting-empty-arguments.c.expected
src/glsl/glcpp/tests/059-token-pasting-integer.c.expected
src/glsl/glcpp/tests/060-left-paren-in-macro-right-paren-in-text.c.expected
src/glsl/glcpp/tests/061-define-chain-obj-to-func-multi.c.expected
src/glsl/glcpp/tests/062-if-0-skips-garbage.c.expected
src/glsl/glcpp/tests/063-comments.c.expected
src/glsl/glcpp/tests/064-version.c.expected
src/glsl/glcpp/tests/065-if-defined-parens.c.expected
src/glsl/glcpp/tests/066-if-nospace-expression.c.expected
src/glsl/glcpp/tests/067-nested-ifdef-ifndef.c.expected
src/glsl/glcpp/tests/068-accidental-pasting.c.expected
src/glsl/glcpp/tests/069-repeated-argument.c.expected
src/glsl/glcpp/tests/070-undefined-macro-in-expression.c.expected
src/glsl/glcpp/tests/071-punctuator.c.expected
src/glsl/glcpp/tests/072-token-pasting-same-line.c.expected
src/glsl/glcpp/tests/073-if-in-ifdef.c.expected
src/glsl/glcpp/tests/074-elif-undef.c.expected
src/glsl/glcpp/tests/075-elif-elif-undef.c.expected
src/glsl/glcpp/tests/076-elif-undef-nested.c.expected
src/glsl/glcpp/tests/077-else-without-if.c.expected
src/glsl/glcpp/tests/078-elif-without-if.c.expected
src/glsl/glcpp/tests/079-endif-without-if.c.expected
src/glsl/glcpp/tests/080-if-without-expression.c.expected
src/glsl/glcpp/tests/081-elif-without-expression.c.expected
src/glsl/glcpp/tests/082-invalid-paste.c.expected
src/glsl/glcpp/tests/083-unterminated-if.c.expected
src/glsl/glcpp/tests/085-incorrect-argument-count.c.expected
src/glsl/glcpp/tests/086-reserved-macro-names.c.expected
src/glsl/glcpp/tests/087-if-comments.c.expected
src/glsl/glcpp/tests/088-redefine-macro-legitimate.c.expected
src/glsl/glcpp/tests/089-redefine-macro-error.c.expected
src/glsl/glcpp/tests/090-hash-error.c.expected
src/glsl/glcpp/tests/091-hash-line.c.expected
src/glsl/glcpp/tests/092-redefine-macro-error-2.c.expected
src/glsl/glcpp/tests/093-divide-by-zero.c.expected
src/glsl/glcpp/tests/094-divide-by-zero-short-circuit.c.expected
src/glsl/glcpp/tests/095-recursive-define.c.expected
src/glsl/glcpp/tests/096-paste-twice.c.expected
src/glsl/glcpp/tests/097-paste-with-non-function-macro.c.expected
src/glsl/glcpp/tests/098-elif-undefined.c.expected
src/glsl/glcpp/tests/099-c99-example.c.expected
src/glsl/glcpp/tests/100-macro-with-colon.c.expected
src/glsl/glcpp/tests/101-macros-used-twice.c.expected
src/glsl/glcpp/tests/104-hash-line-followed-by-code.c.expected
src/glsl/glcpp/tests/105-multiline-hash-line.c.expected
src/glsl/glcpp/tests/106-multiline-hash-if.c.expected
src/glsl/glcpp/tests/107-multiline-hash-elif.c.expected
src/glsl/glcpp/tests/108-no-space-after-hash-version.c.expected
src/glsl/glcpp/tests/109-no-space-after-hash-line.c.expected
src/glsl/glcpp/tests/110-no-space-digits-after-hash-elif.c.expected
src/glsl/glcpp/tests/111-no-space-operator-after-hash-if.c.expected
src/glsl/glcpp/tests/112-no-space-operator-after-hash-elif.c.expected
src/glsl/glcpp/tests/113-line-and-file-macros.c.expected
src/glsl/glcpp/tests/114-paste-integer-tokens.c.expected
src/glsl/glcpp/tests/115-line-continuations.c.expected
src/glsl/glcpp/tests/116-disable-line-continuations.c.expected
src/glsl/glcpp/tests/117-line-continuation-and-non-continuation-backslash.c.expected
src/glsl/glcpp/tests/118-comment-becomes-space.c.expected
src/glsl/glcpp/tests/118-multiple-else.c.expected
src/glsl/glcpp/tests/119-elif-after-else.c.expected
src/glsl/glcpp/tests/120-undef-builtin.c.expected
src/glsl/glcpp/tests/121-comment-bug-72686.c.expected
src/glsl/glcpp/tests/122-redefine-whitespace.c.expected
src/glsl/glcpp/tests/124-preprocessing-numbers.c.expected
src/glsl/glcpp/tests/125-es-short-circuit-undefined.c.expected
src/glsl/glcpp/tests/126-garbage-after-directive.c.expected
src/glsl/glcpp/tests/127-pragma-empty.c.expected
src/glsl/glcpp/tests/128-space-before-hash.c.expected
src/glsl/glcpp/tests/130-define-comment.c.expected

index 44547fde0e91fc3293310f24f89449f3aaba0f0d..980ab5d3ff1af4dccd106570715ed218d60c7f8f 100644 (file)
@@ -60,6 +60,16 @@ void glcpp_set_column (int  column_no , yyscan_t yyscanner);
                yycolumn = 1;           \
                yylloc->source = 0;     \
        } while(0)
+
+#define RETURN_TOKEN(token)                                    \
+       do {                                                    \
+               if (token == NEWLINE)                           \
+                       parser->last_token_was_newline = 1;     \
+               else                                            \
+                       parser->last_token_was_newline = 0;     \
+               return (token);                                 \
+       } while(0)
+
 %}
 
 %option bison-bridge bison-locations reentrant noyywrap
@@ -111,7 +121,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
                        parser->commented_newlines--;
                if (parser->commented_newlines == 0)
                        BEGIN INITIAL;
-               return NEWLINE;
+               RETURN_TOKEN (NEWLINE);
        }
 
        /* The handling of the SKIP vs INITIAL start states requires
@@ -169,13 +179,13 @@ HEXADECIMAL_INTEGER       0[xX][0-9a-fA-F]+[uU]?
 <COMMENT>"*"+"/"        {
        yy_pop_state(yyscanner);
        if (yyextra->space_tokens)
-               return SPACE;
+               RETURN_TOKEN (SPACE);
 }
 
 {HASH}version{HSPACE}+ {
        yylval->str = ralloc_strdup (yyextra, yytext);
        yyextra->space_tokens = 0;
-       return HASH_VERSION;
+       RETURN_TOKEN (HASH_VERSION);
 }
 
        /* glcpp doesn't handle #extension, #version, or #pragma directives.
@@ -184,46 +194,46 @@ HEXADECIMAL_INTEGER       0[xX][0-9a-fA-F]+[uU]?
        yylval->str = ralloc_strdup (yyextra, yytext);
        yylineno++;
        yycolumn = 0;
-       return OTHER;
+       RETURN_TOKEN (OTHER);
 }
 
 {HASH}line{HSPACE}+ {
-       return HASH_LINE;
+       RETURN_TOKEN (HASH_LINE);
 }
 
 <SKIP,INITIAL>{
 {HASH}ifdef {
        yyextra->lexing_directive = 1;
        yyextra->space_tokens = 0;
-       return HASH_IFDEF;
+       RETURN_TOKEN (HASH_IFDEF);
 }
 
 {HASH}ifndef {
        yyextra->lexing_directive = 1;
        yyextra->space_tokens = 0;
-       return HASH_IFNDEF;
+       RETURN_TOKEN (HASH_IFNDEF);
 }
 
 {HASH}if/[^_a-zA-Z0-9] {
        yyextra->lexing_directive = 1;
        yyextra->space_tokens = 0;
-       return HASH_IF;
+       RETURN_TOKEN (HASH_IF);
 }
 
 {HASH}elif/[^_a-zA-Z0-9] {
        yyextra->lexing_directive = 1;
        yyextra->space_tokens = 0;
-       return HASH_ELIF;
+       RETURN_TOKEN (HASH_ELIF);
 }
 
 {HASH}else {
        yyextra->space_tokens = 0;
-       return HASH_ELSE;
+       RETURN_TOKEN (HASH_ELSE);
 }
 
 {HASH}endif {
        yyextra->space_tokens = 0;
-       return HASH_ENDIF;
+       RETURN_TOKEN (HASH_ENDIF);
 }
 }
 
@@ -258,21 +268,21 @@ HEXADECIMAL_INTEGER       0[xX][0-9a-fA-F]+[uU]?
 {HASH}define{HSPACE}+ {
        yyextra->space_tokens = 0;
        yy_push_state(DEFINE, yyscanner);
-       return HASH_DEFINE;
+       RETURN_TOKEN (HASH_DEFINE);
 }
 
        /* An identifier immediately followed by '(' */
 <DEFINE>{IDENTIFIER}/"(" {
        yy_pop_state(yyscanner);
        yylval->str = ralloc_strdup (yyextra, yytext);
-       return FUNC_IDENTIFIER;
+       RETURN_TOKEN (FUNC_IDENTIFIER);
 }
 
        /* An identifier not immediately followed by '(' */
 <DEFINE>{IDENTIFIER} {
        yy_pop_state(yyscanner);
        yylval->str = ralloc_strdup (yyextra, yytext);
-       return OBJ_IDENTIFIER;
+       RETURN_TOKEN (OBJ_IDENTIFIER);
 }
 
        /* Whitespace */
@@ -284,7 +294,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
 <DEFINE>[/][^*]{NONSPACE}* {
        BEGIN INITIAL;
        glcpp_error(yylloc, yyextra, "#define followed by a non-identifier: %s", yytext);
-       return INTEGER_STRING;
+       RETURN_TOKEN (INTEGER_STRING);
 }
 
        /* A character that can't start an identifier, comment, or
@@ -292,98 +302,98 @@ HEXADECIMAL_INTEGER       0[xX][0-9a-fA-F]+[uU]?
 <DEFINE>[^_a-zA-Z/[:space:]]{NONSPACE}* {
        BEGIN INITIAL;
        glcpp_error(yylloc, yyextra, "#define followed by a non-identifier: %s", yytext);
-       return INTEGER_STRING;
+       RETURN_TOKEN (INTEGER_STRING);
 }
 
 {HASH}undef {
        yyextra->space_tokens = 0;
-       return HASH_UNDEF;
+       RETURN_TOKEN (HASH_UNDEF);
 }
 
 {HASH} {
        yyextra->space_tokens = 0;
-       return HASH;
+       RETURN_TOKEN (HASH);
 }
 
 {DECIMAL_INTEGER} {
        yylval->str = ralloc_strdup (yyextra, yytext);
-       return INTEGER_STRING;
+       RETURN_TOKEN (INTEGER_STRING);
 }
 
 {OCTAL_INTEGER} {
        yylval->str = ralloc_strdup (yyextra, yytext);
-       return INTEGER_STRING;
+       RETURN_TOKEN (INTEGER_STRING);
 }
 
 {HEXADECIMAL_INTEGER} {
        yylval->str = ralloc_strdup (yyextra, yytext);
-       return INTEGER_STRING;
+       RETURN_TOKEN (INTEGER_STRING);
 }
 
 "<<"  {
-       return LEFT_SHIFT;
+       RETURN_TOKEN (LEFT_SHIFT);
 }
 
 ">>" {
-       return RIGHT_SHIFT;
+       RETURN_TOKEN (RIGHT_SHIFT);
 }
 
 "<=" {
-       return LESS_OR_EQUAL;
+       RETURN_TOKEN (LESS_OR_EQUAL);
 }
 
 ">=" {
-       return GREATER_OR_EQUAL;
+       RETURN_TOKEN (GREATER_OR_EQUAL);
 }
 
 "==" {
-       return EQUAL;
+       RETURN_TOKEN (EQUAL);
 }
 
 "!=" {
-       return NOT_EQUAL;
+       RETURN_TOKEN (NOT_EQUAL);
 }
 
 "&&" {
-       return AND;
+       RETURN_TOKEN (AND);
 }
 
 "||" {
-       return OR;
+       RETURN_TOKEN (OR);
 }
 
 "##" {
        if (parser->is_gles)
                glcpp_error(yylloc, yyextra, "Token pasting (##) is illegal in GLES");
-       return PASTE;
+       RETURN_TOKEN (PASTE);
 }
 
 "defined" {
-       return DEFINED;
+       RETURN_TOKEN (DEFINED);
 }
 
 {IDENTIFIER} {
        yylval->str = ralloc_strdup (yyextra, yytext);
-       return IDENTIFIER;
+       RETURN_TOKEN (IDENTIFIER);
 }
 
 {PP_NUMBER} {
        yylval->str = ralloc_strdup (yyextra, yytext);
-       return OTHER;
+       RETURN_TOKEN (OTHER);
 }
 
 {PUNCTUATION} {
-       return yytext[0];
+       RETURN_TOKEN (yytext[0]);
 }
 
 {OTHER}+ {
        yylval->str = ralloc_strdup (yyextra, yytext);
-       return OTHER;
+       RETURN_TOKEN (OTHER);
 }
 
 {HSPACE} {
        if (yyextra->space_tokens) {
-               return SPACE;
+               RETURN_TOKEN (SPACE);
        }
 }
 
@@ -395,7 +405,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
        yyextra->lexing_directive = 0;
        yylineno++;
        yycolumn = 0;
-       return NEWLINE;
+       RETURN_TOKEN (NEWLINE);
 }
 
 <INITIAL,COMMENT,DEFINE><<EOF>> {
@@ -405,7 +415,8 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
                glcpp_error(yylloc, yyextra, "#define without macro name");
        BEGIN DONE; /* Don't keep matching this rule forever. */
        yyextra->lexing_directive = 0;
-       return NEWLINE;
+       if (! parser->last_token_was_newline)
+               RETURN_TOKEN (NEWLINE);
 }
 
        /* We don't actually use the UNREACHABLE start condition. We
index 084078eb01f7729f779af070fcff27c66bfb613d..07d780e38776191118fda2efcd2b6805218fbaf1 100644 (file)
@@ -1308,6 +1308,7 @@ glcpp_parser_create (const struct gl_extensions *extensions, gl_api api)
        parser->active = NULL;
        parser->lexing_directive = 0;
        parser->space_tokens = 1;
+        parser->last_token_was_newline = 0;
        parser->newline_as_space = 0;
        parser->in_control_line = 0;
        parser->paren_count = 0;
index 64b4872025c026ce7479762c61ef71d1e6d48bbc..6316c9f49b8c74d2b9d3453290ecaedcf4d1de17 100644 (file)
@@ -177,6 +177,7 @@ struct glcpp_parser {
        active_list_t *active;
        int lexing_directive;
        int space_tokens;
+       int last_token_was_newline;
        int newline_as_space;
        int in_control_line;
        int paren_count;
index 5e17ec910fab28ad638e8bc2a86593d690adb589..f49870f7aa71ca6060d8b7a3792ee40f53b686fe 100644 (file)
@@ -1,2 +1 @@
    this is  four  tokens  with spaces
-
index 878fd15d6f8835610b5cd44a5ae9faa2dcf37229..a464d9da742a631e9d8c104a45f2e44f1629a9a1 100644 (file)
@@ -1,3 +1,2 @@
 
 1
-
index 43d484d713105c630a64d154a1d40fc073f64ef2..c6c9ee38a9e2c3187bfd8b601357d77c207e106d 100644 (file)
@@ -1,4 +1,3 @@
 
 
 1
-
index 4d2698b7a7fdcfae51479bd0c47b79bd55733646..2d07687f8ca760ae40c66450dbef5137f11d6cd9 100644 (file)
@@ -4,4 +4,3 @@
 foo
 bar
 baz
-
index 30fe4dc1f62cf7afcbbb77a8757ebbc25d2f48af..0b0b477d9df13d349a5a961ad3ecd6776f23925a 100644 (file)
@@ -4,4 +4,3 @@
 a b c foo
 b c a bar
 c a b baz
-
index c0f53d75c71fbc481332740027b011541669e036..d148bc8e80071871ac8f26eec5f4d943cfed79aa 100644 (file)
@@ -1,3 +1,2 @@
 
  
-
index 03a7061af030e2380f1b2cef3e0f218c2f7101da..9c0b35a45185933ba1e7694c55f02b3119861e02 100644 (file)
@@ -2,4 +2,3 @@
 1
 
 foo
-
index f4f7efdc2bfe45a2e16e470350d15e85226d3902..5970f49028e3a90e7d138eaabe7ae3fb949f6f69 100644 (file)
@@ -4,4 +4,3 @@
 foo
 
 2
-
index 7f1828a3c614d483e08a197c922008eefe6facd8..6bfe04f738131244b442d059f9401608623839be 100644 (file)
@@ -1,3 +1,2 @@
 
 ((bar)+1)
-
index 9f341dac00ae1751dde99a2d4aa0a645b21912fe..f7a2b8c26cbff839cdbb1b870b2245c299f8ce00 100644 (file)
@@ -1,3 +1,2 @@
 
 ((bar)*(baz))
-
index 4314fc88d83226e6569948855dca7648d895db87..1e89b8cfd0ca587e5f0a084bfe4ef25217ca777a 100644 (file)
@@ -1,3 +1,2 @@
 
 (this is more than one word)
-
index 5648e4fb9d4fb305864dffb97833cc8e46c3bfe9..19f59f5ecb75daa7b97373ecabac7aa78218ace4 100644 (file)
@@ -1,3 +1,2 @@
 
 one fish,two fish,red fish,blue fish
-
index 1d62105de4ce320a196574741d801810002199d7..87f51f0baca66b9080792865537ee1b0d2038a9d 100644 (file)
@@ -1,4 +1,3 @@
 
 
 (2*((1+(3))))
-
index 66c16581758b85b44ebeb73b71a9840dc0cc0b01..1dfc6698bb7c3af1b615872f2549ab962e0cecbf 100644 (file)
@@ -1,3 +1,2 @@
 
 (argument(including parens)for the win)
-
index 36f669925392ca88d3fda22f8fa0a4322b9ea3f5..48e836ec3fa9a421a9cece4d321696379092cdd1 100644 (file)
@@ -1,3 +1,2 @@
 
 onetoken
-
index 3800024c6ff83bf3d685654570b1409040f509d3..8b506b32d55218362855f0c299330230cb453be0 100644 (file)
@@ -3,4 +3,3 @@ success_1
 
 
 success_2
-
index e591044adbb3f5c12afc1d72d37dec76892aeb87..a6ae9465a97c8d123511c15e67db03b8262e52c8 100644 (file)
@@ -3,4 +3,3 @@ success_1
 success_2
 
 success_3
-
index ee9e677096e7063c7181d8b30a36a9b359214e1e..3d7e6be96c882e6ca58b4b4444647f3a0cffe544 100644 (file)
@@ -5,4 +5,3 @@ success_1
 success_2
 
 success_3
-
index 129f5c8542e5ddceb5db939df53bd3770a7d4abe..4a31e1cfa9ee4a0ea65990293a2a385b9d3154b9 100644 (file)
@@ -5,4 +5,3 @@ success_2
 
 
 success_3
-
index 97a11b4472eba871140786e95edb5464b39235c9..a9bb1588e4fa3523d9bce1fad9269cb9d3ef0245 100644 (file)
@@ -9,4 +9,3 @@ success_3
 
 
 success_4
-
index b928b917e3d3d3c27a0e97a604b4f9646e7c92f7..a4995713ca5e2c6e6b63b9131bb03206af1081c1 100644 (file)
@@ -9,4 +9,3 @@ success_2
 
 
 success_3
-
index e5b53a3fa59531d08cfe7f45a19c41e704f0b52f..54d30861197615cbec3b245357c24b8cb60e75a2 100644 (file)
@@ -9,4 +9,3 @@ success_1
 success_2
 
 success_3
-
index c61fd0b3159035238a40202ec97f34cd6f4b024b..8beb9c32c37985c22c7d3af6983b867bff5c85e1 100644 (file)
@@ -9,4 +9,3 @@ success_1
 
 
 success_2
-
index 3f01955ee40b89482bc2a5636a2f389fbc5b57cb..737eb8d94031f5f704079793ba51302023ff5a62 100644 (file)
@@ -15,4 +15,3 @@ success_2
 
 success_3
 
-
index d2b76f14576a5600dd6719b4fad755b8b662dfcb..652fefdd43b1ce10b3a6ae3bfd9695b6d8137dee 100644 (file)
@@ -33,4 +33,3 @@ success_5
 
 
 
-
index bb5d92e8d924d38e0a20ed68983148d1c67e1eb8..44e52b206e5ef6c84382d6ee3d65e53c9edbf271 100644 (file)
@@ -18,4 +18,3 @@ success_4
 
 
 
-
index f97e93673cc0604c8b950773d73d4b52e2fb6b5b..7e78e0454e05ebed3518fd5f6e0a4dabc41e0536 100644 (file)
@@ -13,4 +13,3 @@ success_2
 
 success_3
 
-
index 27ea49696284b85ef7146c6262c99bf88e7b8203..70f737c90a9da4e1aa60ca6ebcf0ea9f08847b7b 100644 (file)
@@ -32,4 +32,3 @@ success_6
 
 
 
-
index 4e3aad521737892add0cbfa9fb224cdeb117f1f5..7d97e15e29d854a45effcb5a3a8896f9000bd64b 100644 (file)
@@ -4,4 +4,3 @@ success
 success
 
 success
-
index f1a2cd21c13f5d9592866f397fea6676ddf037fb..f1288aa7cb749a0c30d9f48f8b8b50b09b03ddc5 100644 (file)
@@ -2,4 +2,3 @@
 12
 1000
 identifier2
-
index 1965c9be02dee24f161a0fdc92159f0d5b1e08f6..f6e10ce0377e977b605009cf973c9e4673e96357 100644 (file)
@@ -18,4 +18,3 @@ more code here
 are not treated like comments.
  
  
-
index 3af71113c8ca13ce76159752936f615f966fb1e6..4036b1ee3741e5f1d875425e9c5fca8e8c38a081 100644 (file)
@@ -1,3 +1,2 @@
 #version 130
 
-
index 3f01955ee40b89482bc2a5636a2f389fbc5b57cb..737eb8d94031f5f704079793ba51302023ff5a62 100644 (file)
@@ -15,4 +15,3 @@ success_2
 
 success_3
 
-
index 3340daaa1f9bfeb01263f0411815d13528aa7e5a..9a5ed2eb2d3a12727350c9f958c23360b177d9b8 100644 (file)
@@ -38,4 +38,3 @@ success
 
 
 success
-
index ce41cd6e52454015457055aed026a7278375ca2b..27582cda5e8b3f0e9c31abccd6e7b321569cc0e6 100644 (file)
@@ -9,4 +9,3 @@
 | |
 + +
 - -
-
index 755c4d4b56c9d03c1defce40e7661a59b45c14f2..8b4b095e488591522f0602db57184ef307f24eb3 100644 (file)
@@ -1,3 +1,2 @@
 
 1 1
-
index fee253b7452f1e4aafb9dddc7fe3bd13e3800fc7..959d68259884391711c665818508fb75cd2fac72 100644 (file)
@@ -1,2 +1 @@
 a = b
-
index c780b43d70fd0166e67d2db8e64c86377d78cc9e..7b80af7e465b0b868c64130099c16b2d20571a63 100644 (file)
@@ -1,3 +1,2 @@
 
 success_1 success_2 success_3
-
index 3f2ff2d6cc8f257ffcade7ead1ca4042c0e884b9..fd40910d9e70d6412e5e9919bb62a2d649c27a7c 100644 (file)
@@ -2,4 +2,3 @@
 
 
 
-
index fd40910d9e70d6412e5e9919bb62a2d649c27a7c..b28b04f643122b019e912540f228c8ed20be9eeb 100644 (file)
@@ -1,4 +1,3 @@
 
 
 
-
index 3f2ff2d6cc8f257ffcade7ead1ca4042c0e884b9..fd40910d9e70d6412e5e9919bb62a2d649c27a7c 100644 (file)
@@ -2,4 +2,3 @@
 
 
 
-
index 6fb66a5e2f01e878ab235d7714bb18eb45225504..3f2ff2d6cc8f257ffcade7ead1ca4042c0e884b9 100644 (file)
@@ -3,4 +3,3 @@
 
 
 
-
index d289b3635627b7542379e3e9f144c606c9b4b77f..cc1c379cad3e0219ea8812d073dbc3f95f854b25 100644 (file)
@@ -1,4 +1,3 @@
 0:1(2): preprocessor error: else without #if
 
 
-
index 7d41f0ac794e99b544bad046225a5c1b4ff24507..ee3450133a24737adc30ebd3de59d1f8aeb2434e 100644 (file)
@@ -1,4 +1,3 @@
 0:1(2): preprocessor error: elif without #if
 
 
-
index 08dd33546f26f70db6f99711203471962759ae75..ad21d4c957933bf3a3eb1ba3c0b6f2aa3791a5b7 100644 (file)
@@ -1,4 +1,3 @@
 0:1(2): preprocessor error: #endif without #if
 
 
-
index 2dd21c0635ef2ff45d1dfa01dc38cfd57fd8e9a6..b48a2d6d2960baccb07385f1326340741765a09f 100644 (file)
@@ -17,4 +17,3 @@ Pasting "4" and "+" does not give a valid preprocessing token.
 2
 34
 45.2
-
index a69f8bab58248ff0602a3ceec016f6f494ec5292..b03f9ccf95f2f676e240388c9a3072c337cb3942 100644 (file)
@@ -2,4 +2,3 @@
 
 
 
-
index 1df30cbb56f53ee4bde4a75ba8bf73d53af18d71..d23845bfd49bd88edae40c99cdd11a842052550c 100644 (file)
@@ -9,4 +9,3 @@ MULT()
 MULT(1)
 MULT(1,2,3)
 
-
index 827e548fe55508049537bf409329c7c89160dcd3..2783a9c14d528b6f099a5362f1ee2d5431c2a5b8 100644 (file)
@@ -3,4 +3,3 @@
 
 win
 
-
index f2f1fbeaf8aada7cdadaf96423c8bd63ef5cf30c..b9b226bb4e1b4b1a150f935d63b89f28f30c1764 100644 (file)
@@ -1,3 +1,2 @@
 0:1(2): preprocessor error: #error human error
 
-
index 48af0b296e436d9577d9b0a520e55b7eb0cc8807..d6831da384e659548f0e5b035c81cbaf25450d2e 100644 (file)
@@ -16,4 +16,3 @@
 #line 90 2
 
 #line 180 2
-
index 08f183f24f56f6b0d35168b35886327921c79400..9adae3f9d558e7571357c8737e9ee012ac18d7f8 100644 (file)
@@ -1,4 +1,3 @@
 0:1(13): preprocessor error: division by 0 in preprocessor directive
 
 
-
index c7aa18ff6cb1567507d886af572444df8a0a24af..493ab091be786a3ba4c7e47f4f1a49f03b64c702 100644 (file)
@@ -1,4 +1,3 @@
 
 
 B(0, C)
-
index e40194112aaf7445330c50dde11ec366f168f7ae..96c57d2a6ecc7234df6d91709e9e43b08f91b36d 100644 (file)
@@ -1,4 +1,3 @@
 
 justonetoken
 
-
index 2af0a12690abcf6ca10720e406ba331070674d47..c6ef689ce4b7cb53b1cf963fff9766db9f49ceaa 100644 (file)
@@ -5,4 +5,3 @@
 
 Yes, this.
 
-
index 19be750555219c6eb1cfb1cd4aa46d2d16040fa1..352bbff48f5a3cbcd281dec510bf72974134386c 100644 (file)
@@ -14,4 +14,3 @@
 f(2 * (y+1)) + f(2 * (f(2 * (z[0])))) % f(2 * (0)) + t(1);
 f(2 * (2 +(3,4)-0,1)) | f(2 * (~ 5)) & f(2 * (0,1))^m(0,1);
 int i[] = { 1, 23, 4, 5, };
-
index 36f98aa3efcd008a7041e4cc7da563dbe651ebce..b4360784ee07c0c427c6fa193313219328709bac 100644 (file)
@@ -5,4 +5,3 @@ switch (1) {
    case 1 + 2:
       break;
 }
-
index 1a4bf15362b60338dbb8cb9ce640d278a804c2a2..1e0b30696cb60f50f83e380a3dad9b45ed46d842 100644 (file)
@@ -14,4 +14,3 @@ once
 
 once again
 
-
index fb8e1504c7c633fafd5b7753a51cd313d1628783..814cef1b8c57d11f301a4ac2e8a658c74dec6d17 100644 (file)
@@ -3,4 +3,3 @@
 
 
 #line 2
-
index 6f5ff2e32396b12edea535f3206b996cf8b4ce36..1c0cbc970f5a05ab3c41578c268265d1dae7b188 100644 (file)
@@ -4,4 +4,3 @@
 
 int foo();
 
-
index 68d489b072d142e90940df95c8c387ecb998d31c..b0601d7ee42db042988aaabb0b4e1b677351a29c 100644 (file)
@@ -5,4 +5,3 @@
 
 int foo();
 
-
index da4544a55caf87a985beb15407f50605bf8650d7..748bfe19b36c281ee93b37cf9c35529e3479d40e 100644 (file)
@@ -1,2 +1 @@
 0:1(3): preprocessor error: Invalid tokens after #
-
index da4544a55caf87a985beb15407f50605bf8650d7..748bfe19b36c281ee93b37cf9c35529e3479d40e 100644 (file)
@@ -1,2 +1 @@
 0:1(3): preprocessor error: Invalid tokens after #
-
index 6d5e9d1a58eec2cf3fa3a15b7401f5f23c3b188c..847437c9111b115767cdd99e76a4673223417a73 100644 (file)
@@ -1,4 +1,3 @@
 0:2(2): preprocessor error: Invalid tokens after #
 
 
-
index 3562fb9eaad1189bc9eb67f6bc5874ee96f46ee4..55bc788ffd760ac9ba1fa8d8bfbc0c6f145ef2ac 100644 (file)
@@ -5,4 +5,3 @@
 5. Hexadecimal for 20560: 5 0 5 0
 6: Zip code for Nortonville, KS: 6 6 0 6 0
 7. James Bond, as a number: 0 0 7
-
index a3ad7da596d97313ac11249de7f3680cc289549a..aa9711034a694af4ffe0acc8dc72b49c2b6fa518 100644 (file)
@@ -5,4 +5,3 @@
 5. Hexadecimal for 20560: 5050
 6: Zip code for Nortonville, KS: 66060
 7. James Bond, as a number: 007
-
index f67ba1cf72e842f8816c7d1d7db952fc9cc6deda..428b5e822c590c3866672a711a73a62b7cf65d71 100644 (file)
@@ -7,4 +7,3 @@
 success
 
 
-
index 2adf5d1ba9089db6963fe916b29f5cfd6477b353..1fa8135cb13a37309ef557ffc81d4bb844d4a66d 100644 (file)
@@ -2,4 +2,3 @@
 
 
 first second
-
index eaec4815076cd05742b3e312ab20f7790c03dfc7..00b3328c83565e14d90ed5737e5d30e51a0d339c 100644 (file)
@@ -5,4 +5,3 @@ int foo;
 
 int bar;
 
-
index 33f051361583e7bc030ecc3ea678a4386f18ffec..636956799cd33ea76b3957e3d61a0873f2786731 100644 (file)
@@ -5,4 +5,3 @@ int foo;
 
 int bar;
 
-
index d6981dc0b804c1f3df43aecfd1e13b21bbb22f1d..339ea4fc617ed849ae80a8c0e0ca1bbfdb12ed2c 100644 (file)
@@ -4,4 +4,3 @@
 
 
 
-
index 402a76381e33fb04db5cd4996b73b3dce9d646e1..5c484c2fe591d8776dde969ff6490e6a13b08797 100644 (file)
@@ -1,3 +1,2 @@
   
 
-
index 6f5254c335829dcf5e22c788c14800b44761a16f..6ec588862d6d19291f459e3b872f56927a7188a8 100644 (file)
@@ -35,4 +35,3 @@
 .23P+OK;GO
 1.3p-OK-GO
 12.P-OK&GO
-
index 957daff6158a3256d2389a668067e6885b188341..89fe08e88766d1be10bbddb83ba6caa751d2a0d0 100644 (file)
@@ -1,4 +1,3 @@
  
 
 #pragma
-
index 71be4c524f28e7601926856cef7adaf71efa7698..5d44f4161ebc9f2e642838f9092d85063cebc262 100644 (file)
@@ -19,4 +19,3 @@
 
  yes, of course
 
-
index ed59055e3068a9d2e7a70666d5d91b92966f32c7..43d399cafe472a3e3f5bfe91628b0b5af4f40369 100644 (file)
@@ -1,3 +1,2 @@
 
 FOO(   bar   )
-