Dec 17, 2001 TRIZ Slide 11


Solution

Use a lexical analyzer.

  1. Break the code down into tokens:
  2. Determine which (non-reserved) word tokens (/[a-zA-Z_]\w*/) represent identifiers, as opposed to fields.
  3. Use a standard string comparison algorithm, such as Boyer-Moore to compare sections. To compare identifiers, keep symbol tables for each segment:
     1 sub tokeq {
     2   my ($t1, $t2, $symtab1, $symtab2, $vars) = @_;
     3   #...
     4   my $name = $t1->{name};
     5   if (!$symtab1->{$name}) {
     6     $symtab1->{$name} = $vars->[0]++;
     7   }
     8 
     9   $name = $t2->{name};
    10   if (!$symtab2->{$name}) {
    11     $symtab2->{$name} = $vars->[1]++;
    12   }
    13   #...
    14   return $symtab1->{$name} == $symtab2->{$name};
    15 }
    



Next Copyright © 2001, David Turner