Skip to content

Token‐based linear diff problems

Wilfred Hughes edited this page May 7, 2024 · 1 revision

Consider changing:

foo();
bar();

To:

if (true) {
  foo();
}

What we want:

+ if (true) {
   foo();
-  bar();
+ }

A longest-common-subsequence algorithm is wrong here. The longest subsequence is five tokens:

( ) ( ) ;

which leads to:

+if+ (+true+) +{+
   +foo+();
    -bar-();
+}+

so we claim foo is added. We want the following four tokens to be preserved:

foo ( ) ;

Proposed solution: advance on both sides, keep first match.

Clone this wiki locally