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