anchor.diff:          |> ignore
   
       //
  -    let emit (compiledSpec : CompiledSpecification) (writer : #TextWriter) : unit =
  +    let emit (compiledSpec : CompiledSpecification) (options : CompilationOptions) (writer : #TextWriter) : unit =
           // Preconditions
           if writer = null then
               nullArg "writer"
  
positive.code:                     indentingWriter.Write "[| "
  
                      // Emit the transition vector elements, based on the transitions out of this state.
                      let maxCharValue = int maxCharValue
                      for c = 0 to maxCharValue do
                          let targetStateId =
                              // Determine the id of the state we transition to when this character is the input.
                              // OPTIMIZE : This lookup is *really* slow -- we should create an optimized
                              // lookup table on-the-fly while compiling the DFA.
                              let targetStateId =
                                  ruleDfaTransitions.AdjacencyMap
                                  |> Map.tryPick (fun edgeKey edgeSet ->
                                      if int edgeKey.Source = ruleDfaStateId &&
                                          CharSet.contains (char c) edgeSet then
                                          // Add the starting state of this rule to the relative DFA state id
                                          // to get the DFA state id for the combined DFA table.
                                          Some (int edgeKey.Target + ruleStartingStateId)
                                      else None)
  
                              // If no transition edge was found for this character, return the
                              // sentinel value to indicate there's no transition.
                              defaultArg targetStateId (int sentinelValue)
  
                          // Emit the state number of the transition target.
                          sprintf "%uus; " targetStateId
                          |> indentingWriter.Write
  
                      // Emit the closing bracket of the transition vector for this state,
                      // plus a semicolon to separate it from the next state's transition vector.
  
negative.code:         |> Option.iter indentingWriter.WriteLine
  
  //
  let generateString (compiledSpec : CompiledSpecification) (options : CompilationOptions) =
      //
      let codeStringBuilder = StringBuilder ()
      
      //
      using (new StringWriter (codeStringBuilder)) (FsLex.emit compiledSpec options)
  
      // Return the generated code string.
      codeStringBuilder.ToString ()
  