def snap_term(stream, PatternDict): """term: primary primary term """ __debug_entry("term", stream) # -- primary result = snap_primary(stream, PatternDict) __debug_print("##primary(in term):", result) if result is None: return __debug_exit(None, stream) position_1 = stream.tell() # -- optional 'term' result_2 = snap_term(stream, PatternDict) __debug_print("##term(in term):", result_2) if result_2 is None: stream.seek(position_1) return __debug_exit(result, stream) ## print "##1:", result.get_string(NormalizeF=False) ## print "##2:", result_2.get_string(NormalizeF=False) result = sequentialize.do([result, result_2], MountToFirstStateMachineF=True, CloneRemainingStateMachinesF=False) return __debug_exit(beautifier.do(result), stream)
def snap_expression(stream, PatternDict): """expression: term term | expression """ __debug_entry("expression", stream) # -- term result = snap_term(stream, PatternDict) if result is None: return __debug_exit(None, stream) # -- optional '|' if not check(stream, '|'): return __debug_exit(result, stream) position_1 = stream.tell() __debug_print("'|' (in expression)") # -- expression result_2 = snap_expression(stream, PatternDict) __debug_print("expression(in expression):", result_2) if result_2 is None: stream.seek(position_1) return __debug_exit(result, stream) result = parallelize.do([result, result_2], CloneF=True) # CloneF = False (shold be!) return __debug_exit(beautifier.do(result), stream)