diff --git a/src/kernel_internals/parsing/errorloc.ml b/src/kernel_internals/parsing/errorloc.ml
index c1a5effb6b7484adcca17c7600734013808be513..31b21bccd37d9d703941c1526e157e10743e0f27 100644
--- a/src/kernel_internals/parsing/errorloc.ml
+++ b/src/kernel_internals/parsing/errorloc.ml
@@ -142,15 +142,19 @@ let setCurrentFile n =
    plus up to [ctx] lines before and after [pos.pos_lnum] (if they exist),
    similar to 'grep -C<ctx>'. The first line is numbered 1.
    Most exceptions are silently caught and printing is stopped if they occur. *)
-let pp_context_from_file ?(ctx=2) ?start_line ?(start_char=1) fmt pos =
+let pp_context_from_file ?(ctx=2) ?start_pos fmt pos =
   try
     let in_ch = open_in (pos.Filepath.pos_path :> string) in
     try
       begin
-        let first_error_line, last_error_line =
-          match start_line with
-          | None -> pos.Filepath.pos_lnum, pos.Filepath.pos_lnum
-          | Some l -> min l pos.Filepath.pos_lnum, max l pos.Filepath.pos_lnum
+        let open Filepath in
+        let first_error_line, start_char, last_error_line =
+          match start_pos with
+          | None -> pos.pos_lnum, 1, pos.pos_lnum
+          | Some s ->
+            min s.pos_lnum pos.pos_lnum,
+            (s.pos_cnum - s.pos_bol + 1),
+            max s.pos_lnum pos.pos_lnum
         in
         (* The difference between the first and last error lines can be very
            large; in this case, we print only the first and last [error_ctx]
@@ -292,11 +296,7 @@ let parse_error ?source msg =
               pp_location (start_pos, last_pos)
               pretty_token (Lexing.lexeme current.lexbuf);
             Format.fprintf fmt "%a@."
-              (pp_context_from_file
-                 ~start_line:start_pos.Filepath.pos_lnum
-                 ~ctx:2
-                 ~start_char:(start_pos.pos_cnum - start_pos.pos_bol + 1))
-              last_pos);
+              (pp_context_from_file ~start_pos ~ctx:2) last_pos);
       raise (Log.AbortError "kernel"))
     msg
 
diff --git a/src/kernel_internals/parsing/errorloc.mli b/src/kernel_internals/parsing/errorloc.mli
index 3d2163ab12926acc0a0a5b1e10530c254e02bff8..e067ebd1d200aa1c1c0dae82c421c409f7e930bc 100644
--- a/src/kernel_internals/parsing/errorloc.mli
+++ b/src/kernel_internals/parsing/errorloc.mli
@@ -68,14 +68,15 @@ val finishParsing: unit -> unit (** Call this function to finish parsing and
 
 (** prints the line identified by the position, together with [ctx] lines
     of context before and after. [ctx] defaults to 2.
-    If [start_line] is specified, then all lines between [start_line] and
-    [pos.pos_lnum] are considered part of the error.
-    If [start_line] and [pos.pos_lnum] are identical (or [start_line] is None),
-    the portion of the line between [start_char] (defaults to 1) and
-    the character position indicated by [pos] is underlined with [^].
+    If [start_pos] is specified, then all positions between [start_pos] and
+    [pos] are considered part of the error. If this expands to multiple
+    lines, those lines will be separated from context by blank lines.
+    Otherwise, the portion of the line that is between the two positions
+    will be underlined with [^]
+    @before Frama-C+dev: [start_pos] was named [start_line] (and was an [int]).
 *)
 val pp_context_from_file:
-  ?ctx:int -> ?start_line:int -> ?start_char:int ->
+  ?ctx:int -> ?start_pos:Filepath.position ->
   Format.formatter -> Filepath.position -> unit
 
 (** prints a readable description of a location
diff --git a/src/kernel_internals/typing/cabs2cil.ml b/src/kernel_internals/typing/cabs2cil.ml
index d98f976c73898a1ec6b4cd9e749e7dc7405908c2..4e13f8455dde1898f6b597576558104751360eca 100644
--- a/src/kernel_internals/typing/cabs2cil.ml
+++ b/src/kernel_internals/typing/cabs2cil.ml
@@ -128,11 +128,10 @@ let typeForInsertedVar: (Cil_types.typ -> Cil_types.typ) ref = ref (fun t -> t)
 let cabs_exp loc node = { expr_loc = loc; expr_node = node }
 
 let abort_context msg =
-  let (p1,p2) = Cil.CurrentLoc.get() in
+  let start_pos,end_pos = Cil.CurrentLoc.get() in
   let append fmt =
     Format.pp_print_newline fmt ();
-    Errorloc.pp_context_from_file
-      ~start_line:p1.pos_lnum ~start_char:(p1.pos_cnum -p1.pos_bol) fmt p2
+    Errorloc.pp_context_from_file ~start_pos fmt end_pos
   in
   Kernel.abort ~current:true ~append msg
 
diff --git a/src/plugins/aorai/utils_parser.ml b/src/plugins/aorai/utils_parser.ml
index 52cfe20c61e49d31fef4776a1cf8dc8f32c6e3bc..03706bd02db08d147cfbd6c353e5672083097bec 100644
--- a/src/plugins/aorai/utils_parser.ml
+++ b/src/plugins/aorai/utils_parser.ml
@@ -25,16 +25,17 @@
 
 open Lexing
 
-let current_loc lex = Cil_datatype.Position.of_lexing_pos (lexeme_start_p lex)
-
 let abort_current lex fmt =
-  let source = current_loc lex in
-  let start_line = source.Filepath.pos_lnum in
-  let start_char = source.pos_cnum - source.pos_bol in
+  let start_pos =
+    Cil_datatype.Position.of_lexing_pos (lexeme_start_p lex)
+  in
+  let end_pos =
+    Cil_datatype.Position.of_lexing_pos (lexeme_end_p lex)
+  in
   let fmt = "before or at token %s@\n%a@\n" ^^ fmt in
-  Aorai_option.abort ~source fmt
+  Aorai_option.abort fmt
     (Lexing.lexeme lex)
-    (Errorloc.pp_context_from_file ~start_line ~start_char ~ctx:2) source
+    (Errorloc.pp_context_from_file ~start_pos ~ctx:2) end_pos
 
 let unknown_token lex =
   abort_current lex
diff --git a/src/plugins/aorai/utils_parser.mli b/src/plugins/aorai/utils_parser.mli
index 94495b62110040746c4b95118a696feec6cc7c6d..65d6018cc86c8d969b9696ef6d211d79e07d264a 100644
--- a/src/plugins/aorai/utils_parser.mli
+++ b/src/plugins/aorai/utils_parser.mli
@@ -25,10 +25,6 @@
 
 (** utilities for parsing automaton's formulas *)
 
-(** returns the position corresponding to the
-    current character in the lexbuf. *)
-val current_loc: Lexing.lexbuf -> Cil_datatype.Position.t
-
 (** aborts the execution using current lexbuf position as source. *)
 val abort_current:
   Lexing.lexbuf -> ('a, Format.formatter, unit, 'b) format4 -> 'a
diff --git a/tests/misc/oracle/bts0451.res.oracle b/tests/misc/oracle/bts0451.res.oracle
index 909322412f84fc085ec941eaeb91d24b853f3097..0fbb9f6d610f59aa42578578fc8b9fd172bc3c66 100644
--- a/tests/misc/oracle/bts0451.res.oracle
+++ b/tests/misc/oracle/bts0451.res.oracle
@@ -4,7 +4,7 @@
   25    /* should abort with an error at type-checking */
   26    int main (void) {
   27      break;
-        ^^^^^^^^
+          ^^^^^^
   28      return 0;
   29    }
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/localisation_error.i b/tests/syntax/localisation_error.i
new file mode 100644
index 0000000000000000000000000000000000000000..9ba065a77bc6e88452caada570660307c9a4b49d
--- /dev/null
+++ b/tests/syntax/localisation_error.i
@@ -0,0 +1,4 @@
+int main() {
+  int b = 0;
+  //@ ghost int a = 2; /*@ assert a == 3; */ /* test */ */
+}
diff --git a/tests/syntax/oracle/arg_type.res.oracle b/tests/syntax/oracle/arg_type.res.oracle
index 256d77be54eea88d5de89856edfa865ae4cd8abf..e38a0c4a8dbc72717d5f9bc66287becec04d567d 100644
--- a/tests/syntax/oracle/arg_type.res.oracle
+++ b/tests/syntax/oracle/arg_type.res.oracle
@@ -7,5 +7,5 @@
   13    int g(int);
   14    
   15    int g(short x) { return x; }
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                                ^
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/binary_op.0.res.oracle b/tests/syntax/oracle/binary_op.0.res.oracle
index 60dc2afc775623a14bdbf16138e62b32b11d1e61..ba9b4df4645c004647be9328520a4ac831ecd04a 100644
--- a/tests/syntax/oracle/binary_op.0.res.oracle
+++ b/tests/syntax/oracle/binary_op.0.res.oracle
@@ -4,7 +4,7 @@
   9     
   10    #ifdef BITWISE
   11    int v(void) { return 0 & v; }
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                             ^^^^^
   12    #endif
   13
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/binary_op.1.res.oracle b/tests/syntax/oracle/binary_op.1.res.oracle
index b896f4027b9e1e78d89cc8d7ee7d295179e244cb..3c36f99b1ba2ca134d9bf826a1cfb7919a94580a 100644
--- a/tests/syntax/oracle/binary_op.1.res.oracle
+++ b/tests/syntax/oracle/binary_op.1.res.oracle
@@ -4,7 +4,7 @@
   13    
   14    #ifdef MULT
   15    int w(void) { return 0 * w; }
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                             ^^^^^
   16    #endif
   17
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/cert_msc_38.0.res.oracle b/tests/syntax/oracle/cert_msc_38.0.res.oracle
index 35b7a148eb975f2de2aba45c97a7c741df1d3ab6..f6a1827a00ee1aa706ca699b14dfed85be6f92fc 100644
--- a/tests/syntax/oracle/cert_msc_38.0.res.oracle
+++ b/tests/syntax/oracle/cert_msc_38.0.res.oracle
@@ -6,7 +6,7 @@
   24    void func(int e) {
   25      // error: assert must be a macro, not a function
   26      execute_handler(&(assert), e < 0);
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                            ^^^^^^
   27    }
   28
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/cert_msc_38.3.res.oracle b/tests/syntax/oracle/cert_msc_38.3.res.oracle
index 218315e21b14ed0d0a190d1042df3801383989b1..2e259dde2946d6569e10c5a4cc95a858c1737dbe 100644
--- a/tests/syntax/oracle/cert_msc_38.3.res.oracle
+++ b/tests/syntax/oracle/cert_msc_38.3.res.oracle
@@ -6,7 +6,7 @@
   41    // error: can't suppress va_* macros
   42    #ifdef TEST_VASTART
   43    void *(*test1)() = &(va_start);
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                             ^^^^^^^^
   44    #endif
   45
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/cert_msc_38.4.res.oracle b/tests/syntax/oracle/cert_msc_38.4.res.oracle
index 0fc570c7b670da969e4e103274aa5a031fa77d53..0ede081258a48c2c8b7b39f35ea4dbf7c520b3c9 100644
--- a/tests/syntax/oracle/cert_msc_38.4.res.oracle
+++ b/tests/syntax/oracle/cert_msc_38.4.res.oracle
@@ -6,7 +6,7 @@
   45    
   46    #ifdef TEST_VACOPY
   47    void (*test2)() = &(va_copy);
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                            ^^^^^^^
   48    #endif
   49
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/cert_msc_38.5.res.oracle b/tests/syntax/oracle/cert_msc_38.5.res.oracle
index 880f1b230eb0b5c44e5c6b09bc3c209c356842c9..9d7c6211083229cedc0417493187e8962410c61c 100644
--- a/tests/syntax/oracle/cert_msc_38.5.res.oracle
+++ b/tests/syntax/oracle/cert_msc_38.5.res.oracle
@@ -6,7 +6,7 @@
   49    
   50    #ifdef TEST_VAARG
   51    void* (*test3)() = &(va_arg);
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                             ^^^^^^
   52    #endif
   53
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/cert_msc_38.6.res.oracle b/tests/syntax/oracle/cert_msc_38.6.res.oracle
index 507ff0d508144acc5759a7f2a9199a02ecaf923a..7ae19b28c59175c9f7070afea5a74d61cb984a01 100644
--- a/tests/syntax/oracle/cert_msc_38.6.res.oracle
+++ b/tests/syntax/oracle/cert_msc_38.6.res.oracle
@@ -6,7 +6,7 @@
   53    
   54    #ifdef TEST_VAEND
   55    void (*test4)() = &(va_end);
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                            ^^^^^^
   56    #endif
   57
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/const-assignments.1.res.oracle b/tests/syntax/oracle/const-assignments.1.res.oracle
index fa6f9af638d0448cc55fd8c5a71071d0c5d2b33d..36093e3713d667b3a4b4c14a4afbdb667e6ffcab 100644
--- a/tests/syntax/oracle/const-assignments.1.res.oracle
+++ b/tests/syntax/oracle/const-assignments.1.res.oracle
@@ -4,7 +4,7 @@
   20    #ifdef T0
   21    void f() {
   22      x = 42;
-        ^^^^^^^^^
+          ^^^^^^
   23    }
   24    #endif
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/const-assignments.2.res.oracle b/tests/syntax/oracle/const-assignments.2.res.oracle
index 2dc9215a35ac450654652550a7134ac578f0d973..02f6615a1ee9edc00bfd905532236f7cd552ff30 100644
--- a/tests/syntax/oracle/const-assignments.2.res.oracle
+++ b/tests/syntax/oracle/const-assignments.2.res.oracle
@@ -4,7 +4,7 @@
   26    #ifdef T1
   27    void f() {
   28      x++;
-        ^^^^^^
+          ^^^
   29    }
   30    #endif
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/const-assignments.3.res.oracle b/tests/syntax/oracle/const-assignments.3.res.oracle
index 23e5bce2386bd9bb6e8994cb30b9b89d71e63abf..d2d7a5d27abb6ffa65c46316ea62d0cd041fce66 100644
--- a/tests/syntax/oracle/const-assignments.3.res.oracle
+++ b/tests/syntax/oracle/const-assignments.3.res.oracle
@@ -4,7 +4,7 @@
   32    #ifdef T2
   33    void f() {
   34      --x;
-        ^^^^^^
+          ^^^
   35    }
   36    #endif
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/const-assignments.4.res.oracle b/tests/syntax/oracle/const-assignments.4.res.oracle
index e1fc81de7638961470872331b6a7e2ace1f35cef..f773542dfc5f2fbc140fbeee5c59bb82fa9b2994 100644
--- a/tests/syntax/oracle/const-assignments.4.res.oracle
+++ b/tests/syntax/oracle/const-assignments.4.res.oracle
@@ -4,7 +4,7 @@
   38    #ifdef T3
   39    void f() {
   40      x += 3;
-        ^^^^^^^^^
+          ^^^^^^
   41    }
   42    #endif
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/const-assignments.5.res.oracle b/tests/syntax/oracle/const-assignments.5.res.oracle
index 6149ca6c14a7ef7f6b9b4cb653bace5472af8f22..1bc8881f49e26ef1b0188b643d9189325442879c 100644
--- a/tests/syntax/oracle/const-assignments.5.res.oracle
+++ b/tests/syntax/oracle/const-assignments.5.res.oracle
@@ -4,7 +4,7 @@
   45    void f() {
   46      const int x = 2;
   47      x *= 2;
-        ^^^^^^^^^
+          ^^^^^^
   48    }
   49    #endif
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/const-assignments.6.res.oracle b/tests/syntax/oracle/const-assignments.6.res.oracle
index 75d299175cdf14a4c23369123383d94c83412930..0a47849f5a7f32f7bdd6893625e758209a9117c1 100644
--- a/tests/syntax/oracle/const-assignments.6.res.oracle
+++ b/tests/syntax/oracle/const-assignments.6.res.oracle
@@ -4,7 +4,7 @@
   51    #ifdef T5
   52    void f(const int* x) {
   53      *x = 1;
-        ^^^^^^^^^
+          ^^^^^^
   54    }
   55    #endif
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/const-assignments.9.res.oracle b/tests/syntax/oracle/const-assignments.9.res.oracle
index 1eac0647def6c209d2ae35d2137f82a76bcaecde..195a24229577ea26b31a04c6abd36f9f2b5c8eaa 100644
--- a/tests/syntax/oracle/const-assignments.9.res.oracle
+++ b/tests/syntax/oracle/const-assignments.9.res.oracle
@@ -4,7 +4,7 @@
   119   
   120   void mutable_test_ko(const T* t) {
   121     t->s.y = 32; // KO: although t->s could be modified, t->s.y is still const
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+          ^^^^^^^^^^^
   122   }
   123
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/function_ptr_lvalue_1.res.oracle b/tests/syntax/oracle/function_ptr_lvalue_1.res.oracle
index 0eca364b644783f7bffc52806e552a4d1ac4eb80..e5ce52792dbd7cc2bb7339417a402b1cc66eb3db 100644
--- a/tests/syntax/oracle/function_ptr_lvalue_1.res.oracle
+++ b/tests/syntax/oracle/function_ptr_lvalue_1.res.oracle
@@ -4,7 +4,7 @@
   11      void (*p)(void) = &f ;
   12      p = 1 ;
   13      *p = 1 ;
-        ^^^^^^^^^^
+          ^^^^^^
   14      return 0 ;
   15      }
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/function_ptr_lvalue_2.res.oracle b/tests/syntax/oracle/function_ptr_lvalue_2.res.oracle
index 4bcdf11602646662df1553ed1c6d4b60bd297b50..e86474631363d992b654fe27948ccfac60aab5da 100644
--- a/tests/syntax/oracle/function_ptr_lvalue_2.res.oracle
+++ b/tests/syntax/oracle/function_ptr_lvalue_2.res.oracle
@@ -4,7 +4,7 @@
   10      void (*p)(void) = &f ;
   11      p = &f ;
   12      *p = f ;
-        ^^^^^^^^^^
+          ^^^^^^
   13      return 0 ;
   14      }
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/generic.1.res.oracle b/tests/syntax/oracle/generic.1.res.oracle
index 07cb4e0900f35bf7656e01f4c4da47c996398609..68c2dc2c614f19cbe6c1a83b91f8c2693b0853cb 100644
--- a/tests/syntax/oracle/generic.1.res.oracle
+++ b/tests/syntax/oracle/generic.1.res.oracle
@@ -5,7 +5,7 @@
   34    int main() {
   35    #ifdef NONE
   36      int a = _Generic("abc");
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^
+                                 ^
   37    #endif
   38    #ifdef TOO_MANY_DEFAULTS
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/generic.2.res.oracle b/tests/syntax/oracle/generic.2.res.oracle
index 97bc6f5808c4546a36098776a764a2b82d62c921..0edc5626dfd5157572f29d022cfbf997a14fba98 100644
--- a/tests/syntax/oracle/generic.2.res.oracle
+++ b/tests/syntax/oracle/generic.2.res.oracle
@@ -4,7 +4,7 @@
   37    #endif
   38    #ifdef TOO_MANY_DEFAULTS
   39      int a = _Generic("abc", default: 1, default: 1);
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   40    #endif
   41    #ifdef TOO_MANY_COMPATIBLE
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/generic.3.res.oracle b/tests/syntax/oracle/generic.3.res.oracle
index e683c048013d632828688464c432aacd535c1d5c..af00e69e6f9a9db9d0453d3965d5af3f92f4deb1 100644
--- a/tests/syntax/oracle/generic.3.res.oracle
+++ b/tests/syntax/oracle/generic.3.res.oracle
@@ -5,7 +5,7 @@
   41    #ifdef TOO_MANY_COMPATIBLE
   42      // compatibility via typedef
   43      int a = _Generic(42, my_uint: 1, unsigned int: 2);
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   44    #endif
   45    #ifdef TOO_MANY_COMPATIBLE2
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/generic.4.res.oracle b/tests/syntax/oracle/generic.4.res.oracle
index f1c86c668f3b5d44078dd2fad20ee3189ae350f2..4dea267e9f5cf04b162f789e3847a6714d99c8a0 100644
--- a/tests/syntax/oracle/generic.4.res.oracle
+++ b/tests/syntax/oracle/generic.4.res.oracle
@@ -4,8 +4,11 @@
   'void (*)()' and 'void (*)(void)'
   45    #ifdef TOO_MANY_COMPATIBLE2
   46      // compatibility modulo implicit arguments
+  
   47      int a = _Generic(0,
-        ^^^^^^^^^^^^^^^^^^^^^
   48          void (*)():     0,
   49          void (*)(void): 0);
+  
+  50    #endif
+  51    #ifdef TOO_MANY_COMPATIBLE3
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/generic.5.res.oracle b/tests/syntax/oracle/generic.5.res.oracle
index 47db165e125863871e8aa11d51329b948954a9ff..579b9dde7959145550bcea41382a8e721f40b21d 100644
--- a/tests/syntax/oracle/generic.5.res.oracle
+++ b/tests/syntax/oracle/generic.5.res.oracle
@@ -5,8 +5,11 @@
   compatible types: void (*)(void), void (*)(int )
   52      // implicit arguments compatible between first and second selector,
   53      // but the selectors themselves are not compatible between them
+  
   54      int a = _Generic((void (*)()) 0,
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   55                       void (*)(int):  0,
   56                       void (*)(void): 0);
+  
+  57    #endif
+  58    #ifdef INCOMPLETE_TYPE
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/generic.6.res.oracle b/tests/syntax/oracle/generic.6.res.oracle
index 17b9dbce578c02ed0e29a79f18e4a5cc97fe53bb..fbfffc1be280933ec883e33e343a303d4541dd09 100644
--- a/tests/syntax/oracle/generic.6.res.oracle
+++ b/tests/syntax/oracle/generic.6.res.oracle
@@ -4,7 +4,7 @@
   57    #endif
   58    #ifdef INCOMPLETE_TYPE
   59      int a = _Generic(42, void: 1, default: 2);
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   60    #endif
   61    #ifdef FUNCTION_TYPE
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/generic.7.res.oracle b/tests/syntax/oracle/generic.7.res.oracle
index b8635912296f2a8ab067e16ae5cd6c79e617740a..c232c3c417e6f8d49a53f25f9f116dc939d908b2 100644
--- a/tests/syntax/oracle/generic.7.res.oracle
+++ b/tests/syntax/oracle/generic.7.res.oracle
@@ -6,7 +6,7 @@
   63    #endif
   64    #ifdef INCOMPATIBLE_QUALIFIED_TYPE
   65      int a = _Generic("abc", char const *: 0);
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   66    #endif
   67      int ok1 = _Generic("abc", char*: 0);
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/generic.8.res.oracle b/tests/syntax/oracle/generic.8.res.oracle
index d07d4fc7c3bf850b4f3952019549118ddfe091e9..d77e640dffce97e0f22e3248a21e6bbf9404f726 100644
--- a/tests/syntax/oracle/generic.8.res.oracle
+++ b/tests/syntax/oracle/generic.8.res.oracle
@@ -5,7 +5,7 @@
   60    #endif
   61    #ifdef FUNCTION_TYPE
   62      int a = _Generic(1, void(int): 1);
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                                   ^^^
   63    #endif
   64    #ifdef INCOMPATIBLE_QUALIFIED_TYPE
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/ghost_cv_parsing_errors.0.res.oracle b/tests/syntax/oracle/ghost_cv_parsing_errors.0.res.oracle
index ccbca4666e4df299d560a288b948c2eb45309def..556ea0b473fac93292764b80b5e1b73afd3b187a 100644
--- a/tests/syntax/oracle/ghost_cv_parsing_errors.0.res.oracle
+++ b/tests/syntax/oracle/ghost_cv_parsing_errors.0.res.oracle
@@ -5,7 +5,7 @@
   12    struct S {
   13      int a ;
   14    } \ghost ;
-        ^^^^^^^^^^
+        ^^^^^^^^
   15    
   16    #endif
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/ghost_cv_parsing_errors.1.res.oracle b/tests/syntax/oracle/ghost_cv_parsing_errors.1.res.oracle
index c6e7d874a8f04424b00edad07d8149bb2c69a414..1060fb309d1c43c99c47d33d4eebefb6b52cdc77 100644
--- a/tests/syntax/oracle/ghost_cv_parsing_errors.1.res.oracle
+++ b/tests/syntax/oracle/ghost_cv_parsing_errors.1.res.oracle
@@ -5,7 +5,7 @@
   18    #ifdef IN_DECL
   19    
   20    int \ghost global ;
-        ^^^^^^^^^^^^^^^^^^^
+        ^^^^^^^^^^
   21    
   22    #endif
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/ghost_else_bad.0.res.oracle b/tests/syntax/oracle/ghost_else_bad.0.res.oracle
index 8c7597d919f243915e628427efbabb963df4021e..687b31dd0c0961e5eaa0d3866eabc41c09b62d8f 100644
--- a/tests/syntax/oracle/ghost_else_bad.0.res.oracle
+++ b/tests/syntax/oracle/ghost_else_bad.0.res.oracle
@@ -4,7 +4,7 @@
   18      } */
   19    
   20      z = 42;
-        ^^^^^^^^^
+          ^
   21    }
   22
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/ghost_local_ill_formed.res.oracle b/tests/syntax/oracle/ghost_local_ill_formed.res.oracle
index db076a7b7a6ec433049a8b98e4ce8eb693c051ac..fcab3b6edda80dcf54a7d33a081288b9362689f8 100644
--- a/tests/syntax/oracle/ghost_local_ill_formed.res.oracle
+++ b/tests/syntax/oracle/ghost_local_ill_formed.res.oracle
@@ -7,6 +7,6 @@
   19      //@ ghost int c = 0;
   20      // ill-formed: the instruction should be ghost as well
   21      c++;
-        ^^^^^^
+          ^
   22    }
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/ghost_multiline_annot.3.res.oracle b/tests/syntax/oracle/ghost_multiline_annot.3.res.oracle
index ca5a43f04dd43c19ee1655ce25e9acc0626720ef..5abb405a7688c062f621226200b256b1da5916d1 100644
--- a/tests/syntax/oracle/ghost_multiline_annot.3.res.oracle
+++ b/tests/syntax/oracle/ghost_multiline_annot.3.res.oracle
@@ -5,7 +5,7 @@
   55    int main()
   56    {
   57      assert (2 == 2); @/
-        ^^^^^^^^^^^^^^^^^^^^^
+                         ^^^
   58      return 0;
   59    }
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/ghost_parameters.11.res.oracle b/tests/syntax/oracle/ghost_parameters.11.res.oracle
index 27c61b15f1593906bbc287ba234bda4c02c8c342..481f6d945559a12cd7ea6b6d2b3b44b90224a99c 100644
--- a/tests/syntax/oracle/ghost_parameters.11.res.oracle
+++ b/tests/syntax/oracle/ghost_parameters.11.res.oracle
@@ -5,7 +5,7 @@
   193   #ifdef VOID_EMPTY_GHOST_PARAMETER_LIST
   194   
   195   void function_void(void) /*@ ghost () */ {
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                                            ^
   196   
   197   }
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/inconsistent_global_ghost_spec.0.res.oracle b/tests/syntax/oracle/inconsistent_global_ghost_spec.0.res.oracle
index 91706e15eaf26f9bedcea422d359921b82289b31..9b4dd9a90766818a45943c9ee2e9e289d1bc80e5 100644
--- a/tests/syntax/oracle/inconsistent_global_ghost_spec.0.res.oracle
+++ b/tests/syntax/oracle/inconsistent_global_ghost_spec.0.res.oracle
@@ -5,7 +5,7 @@
   9     
   10    void function(void) ;
   11    /*@ ghost void function(void){ } */
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                       ^^^^^^^^
   12    
   13    void user(void){
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/inconsistent_global_ghost_spec.1.res.oracle b/tests/syntax/oracle/inconsistent_global_ghost_spec.1.res.oracle
index 366eb65da8bebad673e81287f1547ce7ba696a8c..9c6cce1bd60612b82c08bcbb27e39af7a9581feb 100644
--- a/tests/syntax/oracle/inconsistent_global_ghost_spec.1.res.oracle
+++ b/tests/syntax/oracle/inconsistent_global_ghost_spec.1.res.oracle
@@ -5,7 +5,7 @@
   20    
   21    /*@ ghost void function(void) ; */
   22    void function(void){ }
-        ^^^^^^^^^^^^^^^^^^^^^^
+             ^^^^^^^^
   23    
   24    void user(void){
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/inconsistent_global_ghost_spec.2.res.oracle b/tests/syntax/oracle/inconsistent_global_ghost_spec.2.res.oracle
index 35cfc826665ee35836dba7b90ce92b099648f190..e6dd04f33e9b7840c7f4a4d8d884fa362b6daeb6 100644
--- a/tests/syntax/oracle/inconsistent_global_ghost_spec.2.res.oracle
+++ b/tests/syntax/oracle/inconsistent_global_ghost_spec.2.res.oracle
@@ -5,7 +5,7 @@
   31    
   32    /*@ ghost void function(void){ } */
   33    void function(void) ;
-        ^^^^^^^^^^^^^^^^^^^^^
+        ^^^^
   34    
   35    void user(void){
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/localisation_error.res.oracle b/tests/syntax/oracle/localisation_error.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/tests/syntax/oracle/lvalvoid.res.oracle b/tests/syntax/oracle/lvalvoid.res.oracle
index a43dffc8a880f058bfef52ebfded61cdad2cde23..bca0bd162992eb724b4d064e8082d926153db988 100644
--- a/tests/syntax/oracle/lvalvoid.res.oracle
+++ b/tests/syntax/oracle/lvalvoid.res.oracle
@@ -5,7 +5,7 @@
   6       char* d=dst; char* s=src;
   7       for (int i=0;i<n;i++)
   8         d[i]=(char)(src[i]);
-        ^^^^^^^^^^^^^^^^^^^^^^^^
+                        ^^^^^^
   9       return dst;
   10    }
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/no_prototype.res.oracle b/tests/syntax/oracle/no_prototype.res.oracle
index c3a946c73e7cff7cd41935da87661bed4453c4c2..5cebe4f9f28a2c1a8b524a6f4d57087d5e9ce37c 100644
--- a/tests/syntax/oracle/no_prototype.res.oracle
+++ b/tests/syntax/oracle/no_prototype.res.oracle
@@ -9,7 +9,7 @@
   9         foo();
   10    }
   11    void foo(int a) {
-        ^^^^^^^^^^^^^^^^^
+             ^^^
   12      int i = a ;
   13    }
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/reject_use_decl_mismatch_bts728.0.res.oracle b/tests/syntax/oracle/reject_use_decl_mismatch_bts728.0.res.oracle
index 76603c68330d472624936e438e76176d33c1e163..8bf3f8034fb35482c554e9fce89ad7e732402528 100644
--- a/tests/syntax/oracle/reject_use_decl_mismatch_bts728.0.res.oracle
+++ b/tests/syntax/oracle/reject_use_decl_mismatch_bts728.0.res.oracle
@@ -9,7 +9,7 @@
   17    }
   18    
   19    int f(int x,int y, int z, int t,int t1,int t2,int t3,int t4,int t5,int t6) {
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+            ^
   20      x = 17;
   21      y=18;
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/reject_use_decl_mismatch_bts728.1.res.oracle b/tests/syntax/oracle/reject_use_decl_mismatch_bts728.1.res.oracle
index 177b11f83f9963da63cc7a8b11fde507a1181387..1e4b063503a8d8763cea27368f2b61984d53617f 100644
--- a/tests/syntax/oracle/reject_use_decl_mismatch_bts728.1.res.oracle
+++ b/tests/syntax/oracle/reject_use_decl_mismatch_bts728.1.res.oracle
@@ -8,7 +8,7 @@
   17    }
   18    
   19    int f(int x,int y, int z, int t,int t1,int t2,int t3,int t4,int t5,int t6) {
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+            ^
   20      x = 17;
   21      y=18;
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/type_branch_bts_1081.res.oracle b/tests/syntax/oracle/type_branch_bts_1081.res.oracle
index 279e77e82b0a80efa541243786ebfbbf0a8f6e85..ea64e936b23e0310ebda4a4b2c078f8f30ee68f5 100644
--- a/tests/syntax/oracle/type_branch_bts_1081.res.oracle
+++ b/tests/syntax/oracle/type_branch_bts_1081.res.oracle
@@ -4,7 +4,7 @@
   8       foo ? (void)x : (signed char)y; 
   9       // accepted (we drop the expressions, don't care about their types)
   10      int z = foo ? (void)x: (signed char)y; // rejected
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   11      return 0;
   12    }
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/typedef_namespace_bts1500.1.res.oracle b/tests/syntax/oracle/typedef_namespace_bts1500.1.res.oracle
index 382925a17d83920679a858652248efddf67a7fcf..9a3b3fba23393d8e1c25b9162d0e30c244bddb98 100644
--- a/tests/syntax/oracle/typedef_namespace_bts1500.1.res.oracle
+++ b/tests/syntax/oracle/typedef_namespace_bts1500.1.res.oracle
@@ -5,7 +5,7 @@
   22      // error: digit is now a variable
   23    #ifdef HIDING_TYPEDEF
   24      digit y = 5;
-        ^^^^^^^^^^^^^^
+                ^
   25    #endif
   26      return x + digit+A;
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/very_large_integers.13.res.oracle b/tests/syntax/oracle/very_large_integers.13.res.oracle
index e74ad25634d44e2274a374ae907cbca71e904c37..dfa0361fdd0d0d4d5c61012271356b53d0c9e311 100644
--- a/tests/syntax/oracle/very_large_integers.13.res.oracle
+++ b/tests/syntax/oracle/very_large_integers.13.res.oracle
@@ -9,7 +9,7 @@
   100   #ifdef ARRAY_INIT1
   101   // Previously caused Invalid_argument(Array.make)
   102   int a1[] = {[72057594037927936] = 0};
-                    ^^^^^^^^^^^^^^^^^^
+                     ^^^^^^^^^^^^^^^^^
   103   #endif
   104
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/very_large_integers.14.res.oracle b/tests/syntax/oracle/very_large_integers.14.res.oracle
index 3ded691db128b079cba777fce10a9415a15903f9..7cbdaf67c3bf4023f8a9718c4fdf3ad4a994aee4 100644
--- a/tests/syntax/oracle/very_large_integers.14.res.oracle
+++ b/tests/syntax/oracle/very_large_integers.14.res.oracle
@@ -10,7 +10,7 @@
   112   // Previously caused Out of memory
   113   struct st s = {
   114     {{[7205759403792793 ... 7205759403792793] = 0}}
-            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   115   };
   116   #endif
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/very_large_integers.15.res.oracle b/tests/syntax/oracle/very_large_integers.15.res.oracle
index b39f7c8df96db714552373dbfb3e1964cff2bd78..c50d81a831f04612f363830022c80e0b0cc7e6b8 100644
--- a/tests/syntax/oracle/very_large_integers.15.res.oracle
+++ b/tests/syntax/oracle/very_large_integers.15.res.oracle
@@ -9,7 +9,7 @@
   117   
   118   #ifdef ARRAY_INIT3
   119   int ai3[] = {0xdead, [72057594037927936] = 0xbeef};
-                             ^^^^^^^^^^^^^^^^^^
+                              ^^^^^^^^^^^^^^^^^
   120   #endif
   121   #ifdef ARRAY_INIT4
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/very_large_integers.16.res.oracle b/tests/syntax/oracle/very_large_integers.16.res.oracle
index eb45cfee5dbeda5a8364396ad9a361c61674cafc..f292ca3c683a39dd65d48a16e757b21d68545b05 100644
--- a/tests/syntax/oracle/very_large_integers.16.res.oracle
+++ b/tests/syntax/oracle/very_large_integers.16.res.oracle
@@ -9,7 +9,7 @@
   121   #ifdef ARRAY_INIT4
   122   // Previously caused Out of memory
   123   int ai4[] = {1, [7205759403792793] = 11};
-                        ^^^^^^^^^^^^^^^^^
+                         ^^^^^^^^^^^^^^^^
   124   #endif
   125
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/very_large_integers.2.res.oracle b/tests/syntax/oracle/very_large_integers.2.res.oracle
index 8fd8c4b251b674d680d7030fb0d834a073f4db09..b72cb2ce3d3125db17c085a63e7fdc88d3a091d2 100644
--- a/tests/syntax/oracle/very_large_integers.2.res.oracle
+++ b/tests/syntax/oracle/very_large_integers.2.res.oracle
@@ -6,7 +6,7 @@
   47    void case_range() {
   48      switch (nondetul)
   49      case 0 ... 9999999999999999999U:;
-         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   50      case 0 ... 199999999999999999U:;
   51    }
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/very_large_integers.3.res.oracle b/tests/syntax/oracle/very_large_integers.3.res.oracle
index f36fb4343d810e2291e94fe870879b536f7a8698..2659f34187783f6f3f32c31b89c229f75ee37083 100644
--- a/tests/syntax/oracle/very_large_integers.3.res.oracle
+++ b/tests/syntax/oracle/very_large_integers.3.res.oracle
@@ -4,7 +4,7 @@
   55    void case_range2() {
   56      switch (nondet)
   57      case 0 ... 10000000U:;
-         ^^^^^^^^^^^^^^^^^^^^^^^
+          ^^^^^^^^^^^^^^^^^^^^^^
   58    }
   59    #endif
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/very_large_integers.5.res.oracle b/tests/syntax/oracle/very_large_integers.5.res.oracle
index 0e84fc8e48cfe064978ae9009f0990872c8857f9..71b8acde63287df8b59e062509a2375eb2b3a5a3 100644
--- a/tests/syntax/oracle/very_large_integers.5.res.oracle
+++ b/tests/syntax/oracle/very_large_integers.5.res.oracle
@@ -4,7 +4,7 @@
   64    
   65    #ifdef INIT_DESIGNATOR2
   66    int arr3[1] = { [9999999999999999999U] = 42 };
-                        ^^^^^^^^^^^^^^^^^^^^^
+                         ^^^^^^^^^^^^^^^^^^^^
   67    #endif
   68
 [kernel] Frama-C aborted: invalid user input.
diff --git a/tests/syntax/oracle/wrong_label.res.oracle b/tests/syntax/oracle/wrong_label.res.oracle
index 8ccccb3e43634dfae541b21c6c3e1429bc8fbc48..09dedc1be826a7b75581602889a0d57cb6d51155 100644
--- a/tests/syntax/oracle/wrong_label.res.oracle
+++ b/tests/syntax/oracle/wrong_label.res.oracle
@@ -5,6 +5,6 @@
   9     
   10    void main() {
   11      {_LOR:} // KO: labels can't be at the end of a block.
-        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+                ^
   12    }
 [kernel] Frama-C aborted: invalid user input.