docs: def convert_mrf_to_syntax_mrf( mrf_lines, conversion_rules ):
      ''' Converts given lines from Filosoft's mrf format to syntactic analyzer's 
          format, using the morph-category conversion rules from conversion_rules,
          and punctuation via method _convert_punctuation();
          As a result of conversion, the input list  mrf_lines  will be modified,
          and also returned after a successful conversion;
          
          Morph-category conversion rules should be loaded via method 
              load_fs_mrf_to_syntax_mrf_translation_rules( rulesFile ),
          usually from a file named 'tmorftrtabel.txt';
          
          Note that the resulting list of lines likely has more lines than the 
          original list had, because the conversion often requires that the 
          original Filosoft's analysis is expanded into multiple analyses 
          suitable for the syntactic analyzer;
      ''' 
      i = 0
      while ( i < len(mrf_lines) ):
          line = mrf_lines[i]
          if line.startswith('  '):  # only consider lines of analysis 
              # 1) Convert punctuation
              if _punctOrAbbrev.search(line):
                  mrf_lines[i] = _convert_punctuation( line )
                  if '_Y_' not in line:
                      i += 1
                      continue
              # 2) Convert morphological analyses that have a form specified
              withFormMatch = _morfWithForm.search(line)
              if withFormMatch:
                  root    = withFormMatch.group(1)
                  pos     = withFormMatch.group(2)
                  formStr = withFormMatch.group(3)
                  forms   = formStr.split(',')
                  all_new_lines = []
                  for form in forms:
                      morphKey = pos+' '+form.strip()
                      if morphKey in conversion_rules:
                          newlines = [ '    '+root+' //'+_esc_que_mark(r)+' //' for r in conversion_rules[morphKey] ]
                          all_new_lines.extend( newlines )
                  if all_new_lines:
                      del mrf_lines[i] 
                      for newline in all_new_lines:
                          mrf_lines.insert(i, newline)
                      i += len(newlines)
                      continue
              else:
                  withoutFormMatch = _morfWithoutForm.search(line)
                  if withoutFormMatch:
                      # 3) Convert morphological analyses that have only POS specified
                      root = withoutFormMatch.group(1)
                      pos  = withoutFormMatch.group(2)
                      morphKey = pos
                      all_new_lines = []
                      if morphKey in conversion_rules:
                          newlines = [ '    '+root+' //'+_esc_que_mark(r)+' //' for r in conversion_rules[morphKey] ]
                          all_new_lines.extend( newlines )
                      if all_new_lines:
                          del mrf_lines[i] 
                          for newline in all_new_lines:
                              mrf_lines.insert(i, newline)
                          i += len(newlines)
                          continue
          i += 1
      return mrf_lines