示例#1
0
 def parse_TypeArrow(prim__state, prim__tokens):
     lcl_0 = parse_TypeApp(prim__state, prim__tokens)
     _slot_0_check = lcl_0
     lcl_0 = _slot_0_check[0]
     lcl_0 = (lcl_0 is False)
     if lcl_0:
         lcl_0 = _slot_0_check
     else:
         lcl_0 = _slot_0_check[1]
         lcl_0 = lcl_0
         _slot_0 = lcl_0
         lcl_0 = prim__tokens.offset
         _off_0 = lcl_0
         lcl_0 = (len(prim__tokens.array) > (prim__tokens.offset + 0))
         if lcl_0:
             lcl_2 = prim__tokens.array[(prim__tokens.offset + 0)]
             lcl_2 = lcl_2.idint
             if (lcl_2 == 3):
                 _py_local_i = prim__tokens.offset
                 _py_local_t = prim__tokens.array[_py_local_i]
                 prim__tokens.offset = (_py_local_i + 1)
                 lcl_2 = _py_local_t
                 _slot_1 = lcl_2
                 lcl_2 = parse_TypeArrow(prim__state, prim__tokens)
                 _slot_2_check = lcl_2
                 lcl_2 = _slot_2_check[0]
                 lcl_2 = (lcl_2 is False)
                 if lcl_2:
                     lcl_2 = _slot_2_check
                 else:
                     lcl_3 = _slot_2_check[1]
                     lcl_3 = lcl_3
                     _slot_2 = lcl_3
                     lcl_3 = (_slot_1, _slot_2)
                     _slot_local__1 = lcl_3
                     lcl_3 = (_slot_0, _slot_local__1)
                     lcl_3 = prim__mk__ast('TypeArrow', lcl_3)
                     _slot_local__2 = lcl_3
                     lcl_3 = (True, _slot_local__2)
                     lcl_2 = lcl_3
                 lcl_1 = lcl_2
             else:
                 lcl_2 = (_slot_0, )
                 lcl_2 = prim__mk__ast('TypeArrow', lcl_2)
                 _slot_local__1 = lcl_2
                 lcl_2 = (True, _slot_local__1)
                 lcl_1 = lcl_2
             lcl_0 = lcl_1
         else:
             lcl_1 = (_off_0, 'TypeArrow got EOF')
             lcl_1 = prim__cons(lcl_1, prim__nil)
             lcl_1 = lcl_1
             lcl_1 = (False, lcl_1)
             lcl_0 = lcl_1
     return lcl_0
示例#2
0
 def parse_LitType(prim__state, prim__tokens):
     lcl_0 = 2
     try:
         _py_local_tk = prim__tokens.array[prim__tokens.offset]
         if (_py_local_tk.idint is lcl_0):
             prim__tokens.offset += 1
         else:
             _py_local_tk = None
     except IndexError:
         _py_local_tk = None
     lcl_0 = _py_local_tk
     _slot_0 = lcl_0
     lcl_0 = (_slot_0 is None)
     if lcl_0:
         lcl_0 = prim__tokens.offset
         lcl_0 = (lcl_0, 'quote * not match')
         lcl_0 = prim__cons(lcl_0, prim__nil)
         lcl_0 = lcl_0
         lcl_0 = (False, lcl_0)
     else:
         lcl_0 = (_slot_0, )
         lcl_0 = prim__mk__ast('LitType', lcl_0)
         _slot_local__1 = lcl_0
         lcl_0 = (True, _slot_local__1)
     return lcl_0
示例#3
0
 def parse_quote(prim__state, prim__tokens):
     lcl_0 = 2
     try:
         _py_local_tk = prim__tokens.array[prim__tokens.offset]
         if (_py_local_tk.idint is lcl_0):
             prim__tokens.offset += 1
         else:
             _py_local_tk = None
     except IndexError:
         _py_local_tk = None
     lcl_0 = _py_local_tk
     _slot_0 = lcl_0
     lcl_0 = (_slot_0 is None)
     if lcl_0:
         lcl_0 = prim__tokens.offset
         lcl_0 = (lcl_0, 'quote ` not match')
         lcl_0 = prim__cons(lcl_0, prim__nil)
         lcl_0 = lcl_0
         lcl_0 = (False, lcl_0)
     else:
         lcl_0 = parse_args(prim__state, prim__tokens)
         _slot_1_check = lcl_0
         lcl_0 = _slot_1_check[0]
         lcl_0 = (lcl_0 is False)
         if lcl_0:
             lcl_0 = _slot_1_check
         else:
             lcl_1 = _slot_1_check[1]
             lcl_1 = lcl_1
             _slot_1 = lcl_1
             lcl_1 = 2
             try:
                 _py_local_tk = prim__tokens.array[prim__tokens.offset]
                 if (_py_local_tk.idint is lcl_1):
                     prim__tokens.offset += 1
                 else:
                     _py_local_tk = None
             except IndexError:
                 _py_local_tk = None
             lcl_1 = _py_local_tk
             _slot_2 = lcl_1
             lcl_1 = (_slot_2 is None)
             if lcl_1:
                 lcl_1 = prim__tokens.offset
                 lcl_1 = (lcl_1, 'quote ` not match')
                 lcl_1 = prim__cons(lcl_1, prim__nil)
                 lcl_1 = lcl_1
                 lcl_1 = (False, lcl_1)
             else:
                 lcl_1 = (_slot_0, _slot_1, _slot_2)
                 lcl_1 = prim__mk__ast('quote', lcl_1)
                 _slot_local__1 = lcl_1
                 lcl_1 = (True, _slot_local__1)
             lcl_0 = lcl_1
     return lcl_0
示例#4
0
 def lr_step_pattern(_slot_0, prim__state, prim__tokens):
     lcl_0 = parse_ch(prim__state, prim__tokens)
     _slot_1_check = lcl_0
     lcl_0 = _slot_1_check[0]
     lcl_0 = (lcl_0 is False)
     if lcl_0:
         lcl_0 = _slot_1_check
     else:
         lcl_0 = _slot_1_check[1]
         lcl_0 = lcl_0
         _slot_1 = lcl_0
         lcl_0 = (_slot_0, _slot_1)
         lcl_0 = prim__mk__ast('pattern', lcl_0)
         _slot_local__1 = lcl_0
         lcl_0 = (True, _slot_local__1)
     return lcl_0
示例#5
0
 def lr_step_TypeApp(_slot_0, prim__state, prim__tokens):
     lcl_0 = parse_LitType(prim__state, prim__tokens)
     _slot_1_check = lcl_0
     lcl_0 = _slot_1_check[0]
     lcl_0 = (lcl_0 is False)
     if lcl_0:
         lcl_0 = _slot_1_check
     else:
         lcl_0 = _slot_1_check[1]
         lcl_0 = lcl_0
         _slot_1 = lcl_0
         lcl_0 = (_slot_0, _slot_1)
         lcl_0 = prim__mk__ast('TypeApp', lcl_0)
         _slot_local__1 = lcl_0
         lcl_0 = (True, _slot_local__1)
     return lcl_0
示例#6
0
 def parse_Type(prim__state, prim__tokens):
     lcl_0 = parse_TypeArrow(prim__state, prim__tokens)
     _slot_0_check = lcl_0
     lcl_0 = _slot_0_check[0]
     lcl_0 = (lcl_0 is False)
     if lcl_0:
         lcl_0 = _slot_0_check
     else:
         lcl_0 = _slot_0_check[1]
         lcl_0 = lcl_0
         _slot_0 = lcl_0
         lcl_0 = (_slot_0, )
         lcl_0 = prim__mk__ast('Type', lcl_0)
         _slot_local__1 = lcl_0
         lcl_0 = (True, _slot_local__1)
     return lcl_0
示例#7
0
 def parse_args(prim__state, prim__tokens):
     lcl_0 = parse_strPattern(prim__state, prim__tokens)
     _slot_0_check = lcl_0
     lcl_0 = _slot_0_check[0]
     lcl_0 = (lcl_0 is False)
     if lcl_0:
         lcl_0 = _slot_0_check
     else:
         lcl_0 = _slot_0_check[1]
         lcl_0 = lcl_0
         _slot_0 = lcl_0
         lcl_0 = (_slot_0, )
         lcl_0 = prim__mk__ast('args', lcl_0)
         _slot_local__1 = lcl_0
         lcl_0 = lr_loop_args(_slot_local__1, prim__state, prim__tokens)
         lcl_0 = (True, lcl_0)
     return lcl_0
示例#8
0
 def parse_strPattern(prim__state, prim__tokens):
     lcl_0 = prim__tokens.offset
     _off_0 = lcl_0
     lcl_0 = (len(prim__tokens.array) > (prim__tokens.offset + 0))
     if lcl_0:
         lcl_2 = prim__tokens.array[(prim__tokens.offset + 0)]
         lcl_2 = lcl_2.idint
         if (lcl_2 == 5):
             _py_local_i = prim__tokens.offset
             _py_local_t = prim__tokens.array[_py_local_i]
             prim__tokens.offset = (_py_local_i + 1)
             lcl_2 = _py_local_t
             _slot_0 = lcl_2
             lcl_2 = (_slot_0, )
             lcl_2 = prim__mk__ast('strPattern', lcl_2)
             _slot_local__1 = lcl_2
             lcl_2 = (True, _slot_local__1)
             lcl_1 = lcl_2
         elif (lcl_2 == 2):
             lcl_2 = parse_quote(prim__state, prim__tokens)
             _slot_0_check = lcl_2
             lcl_2 = _slot_0_check[0]
             lcl_2 = (lcl_2 is False)
             if lcl_2:
                 lcl_2 = _slot_0_check
             else:
                 lcl_2 = _slot_0_check[1]
                 lcl_2 = lcl_2
                 _slot_0 = lcl_2
                 lcl_2 = (_slot_0, )
                 lcl_2 = prim__mk__ast('strPattern', lcl_2)
                 _slot_local__1 = lcl_2
                 lcl_2 = (True, _slot_local__1)
             lcl_1 = lcl_2
         elif (lcl_2 == 4):
             lcl_2 = parse_pattern(prim__state, prim__tokens)
             _slot_0_check = lcl_2
             lcl_2 = _slot_0_check[0]
             lcl_2 = (lcl_2 is False)
             if lcl_2:
                 lcl_2 = _slot_0_check
             else:
                 lcl_3 = _slot_0_check[1]
                 lcl_3 = lcl_3
                 _slot_0 = lcl_3
                 lcl_3 = (_slot_0, )
                 lcl_3 = prim__mk__ast('strPattern', lcl_3)
                 _slot_local__1 = lcl_3
                 lcl_3 = (True, _slot_local__1)
                 lcl_2 = lcl_3
             lcl_1 = lcl_2
         elif (lcl_2 == 3):
             lcl_2 = parse_doubleQuotedStr(prim__state, prim__tokens)
             _slot_0_check = lcl_2
             lcl_3 = _slot_0_check[0]
             lcl_2 = (lcl_3 is False)
             if lcl_2:
                 lcl_2 = _slot_0_check
             else:
                 lcl_2 = _slot_0_check[1]
                 lcl_2 = lcl_2
                 _slot_0 = lcl_2
                 lcl_2 = (_slot_0, )
                 lcl_2 = prim__mk__ast('strPattern', lcl_2)
                 _slot_local__1 = lcl_2
                 lcl_2 = (True, _slot_local__1)
             lcl_1 = lcl_2
         elif (lcl_2 == 6):
             lcl_2 = parse_pattern(prim__state, prim__tokens)
             _slot_0_check = lcl_2
             lcl_2 = _slot_0_check[0]
             lcl_2 = (lcl_2 is False)
             if lcl_2:
                 lcl_2 = _slot_0_check
             else:
                 lcl_3 = _slot_0_check[1]
                 lcl_3 = lcl_3
                 _slot_0 = lcl_3
                 lcl_3 = (_slot_0, )
                 lcl_3 = prim__mk__ast('strPattern', lcl_3)
                 _slot_local__1 = lcl_3
                 lcl_3 = (True, _slot_local__1)
                 lcl_2 = lcl_3
             lcl_1 = lcl_2
         else:
             lcl_2 = (_off_0, 'strPattern lookahead failed')
             lcl_3 = prim__cons(lcl_2, prim__nil)
             lcl_2 = lcl_3
             lcl_2 = (False, lcl_2)
             lcl_1 = lcl_2
         lcl_0 = lcl_1
     else:
         lcl_1 = (_off_0, 'strPattern got EOF')
         lcl_1 = prim__cons(lcl_1, prim__nil)
         lcl_1 = lcl_1
         lcl_1 = (False, lcl_1)
         lcl_0 = lcl_1
     return lcl_0
示例#9
0
 def parse_doubleQuotedStr(prim__state, prim__tokens):
     lcl_0 = 3
     try:
         _py_local_tk = prim__tokens.array[prim__tokens.offset]
         if (_py_local_tk.idint is lcl_0):
             prim__tokens.offset += 1
         else:
             _py_local_tk = None
     except IndexError:
         _py_local_tk = None
     lcl_0 = _py_local_tk
     _slot_0 = lcl_0
     lcl_0 = (_slot_0 is None)
     if lcl_0:
         lcl_0 = prim__tokens.offset
         lcl_0 = (lcl_0, 'quote " not match')
         lcl_0 = prim__cons(lcl_0, prim__nil)
         lcl_0 = lcl_0
         lcl_0 = (False, lcl_0)
     else:
         lcl_0 = prim__tokens.offset
         _off_1 = lcl_0
         lcl_0 = (len(prim__tokens.array) > (prim__tokens.offset + 0))
         if lcl_0:
             lcl_1 = prim__tokens.array[(prim__tokens.offset + 0)]
             lcl_1 = lcl_1.idint
             if (lcl_1 == 5):
                 lcl_1 = parse_args(prim__state, prim__tokens)
                 _slot_1_check = lcl_1
                 lcl_1 = _slot_1_check[0]
                 lcl_1 = (lcl_1 is False)
                 if lcl_1:
                     lcl_1 = _slot_1_check
                 else:
                     lcl_1 = _slot_1_check[1]
                     lcl_1 = lcl_1
                     _slot_1 = lcl_1
                     lcl_1 = 3
                     try:
                         _py_local_tk = prim__tokens.array[
                             prim__tokens.offset]
                         if (_py_local_tk.idint is lcl_1):
                             prim__tokens.offset += 1
                         else:
                             _py_local_tk = None
                     except IndexError:
                         _py_local_tk = None
                     lcl_1 = _py_local_tk
                     _slot_2 = lcl_1
                     lcl_1 = (_slot_2 is None)
                     if lcl_1:
                         lcl_1 = prim__tokens.offset
                         lcl_1 = (lcl_1, 'quote " not match')
                         lcl_1 = prim__cons(lcl_1, prim__nil)
                         lcl_1 = lcl_1
                         lcl_1 = (False, lcl_1)
                     else:
                         lcl_1 = (_slot_0, _slot_1, _slot_2)
                         lcl_1 = prim__mk__ast('doubleQuotedStr', lcl_1)
                         _slot_local__1 = lcl_1
                         lcl_1 = (True, _slot_local__1)
                 lcl_0 = lcl_1
             elif (lcl_1 == 2):
                 lcl_1 = parse_args(prim__state, prim__tokens)
                 _slot_1_check = lcl_1
                 lcl_1 = _slot_1_check[0]
                 lcl_1 = (lcl_1 is False)
                 if lcl_1:
                     lcl_1 = _slot_1_check
                 else:
                     lcl_1 = _slot_1_check[1]
                     lcl_1 = lcl_1
                     _slot_1 = lcl_1
                     lcl_1 = 3
                     try:
                         _py_local_tk = prim__tokens.array[
                             prim__tokens.offset]
                         if (_py_local_tk.idint is lcl_1):
                             prim__tokens.offset += 1
                         else:
                             _py_local_tk = None
                     except IndexError:
                         _py_local_tk = None
                     lcl_1 = _py_local_tk
                     _slot_2 = lcl_1
                     lcl_1 = (_slot_2 is None)
                     if lcl_1:
                         lcl_1 = prim__tokens.offset
                         lcl_1 = (lcl_1, 'quote " not match')
                         lcl_1 = prim__cons(lcl_1, prim__nil)
                         lcl_1 = lcl_1
                         lcl_1 = (False, lcl_1)
                     else:
                         lcl_1 = (_slot_0, _slot_1, _slot_2)
                         lcl_1 = prim__mk__ast('doubleQuotedStr', lcl_1)
                         _slot_local__1 = lcl_1
                         lcl_1 = (True, _slot_local__1)
                 lcl_0 = lcl_1
             elif (lcl_1 == 4):
                 lcl_1 = parse_args(prim__state, prim__tokens)
                 _slot_1_check = lcl_1
                 lcl_1 = _slot_1_check[0]
                 lcl_1 = (lcl_1 is False)
                 if lcl_1:
                     lcl_1 = _slot_1_check
                 else:
                     lcl_1 = _slot_1_check[1]
                     lcl_1 = lcl_1
                     _slot_1 = lcl_1
                     lcl_1 = 3
                     try:
                         _py_local_tk = prim__tokens.array[
                             prim__tokens.offset]
                         if (_py_local_tk.idint is lcl_1):
                             prim__tokens.offset += 1
                         else:
                             _py_local_tk = None
                     except IndexError:
                         _py_local_tk = None
                     lcl_1 = _py_local_tk
                     _slot_2 = lcl_1
                     lcl_1 = (_slot_2 is None)
                     if lcl_1:
                         lcl_1 = prim__tokens.offset
                         lcl_1 = (lcl_1, 'quote " not match')
                         lcl_1 = prim__cons(lcl_1, prim__nil)
                         lcl_1 = lcl_1
                         lcl_1 = (False, lcl_1)
                     else:
                         lcl_1 = (_slot_0, _slot_1, _slot_2)
                         lcl_1 = prim__mk__ast('doubleQuotedStr', lcl_1)
                         _slot_local__1 = lcl_1
                         lcl_1 = (True, _slot_local__1)
                 lcl_0 = lcl_1
             elif (lcl_1 == 3):
                 lcl_1 = prim__tokens.offset
                 _off_2 = lcl_1
                 lcl_1 = parse_args(prim__state, prim__tokens)
                 _slot_1_check = lcl_1
                 lcl_1 = _slot_1_check[0]
                 lcl_1 = (lcl_1 is False)
                 if lcl_1:
                     lcl_1 = _slot_1_check
                 else:
                     lcl_2 = _slot_1_check[1]
                     lcl_2 = lcl_2
                     _slot_1 = lcl_2
                     lcl_2 = 3
                     try:
                         _py_local_tk = prim__tokens.array[
                             prim__tokens.offset]
                         if (_py_local_tk.idint is lcl_2):
                             prim__tokens.offset += 1
                         else:
                             _py_local_tk = None
                     except IndexError:
                         _py_local_tk = None
                     lcl_2 = _py_local_tk
                     _slot_2 = lcl_2
                     lcl_2 = (_slot_2 is None)
                     if lcl_2:
                         lcl_2 = prim__tokens.offset
                         lcl_2 = (lcl_2, 'quote " not match')
                         lcl_2 = prim__cons(lcl_2, prim__nil)
                         lcl_2 = lcl_2
                         lcl_2 = (False, lcl_2)
                     else:
                         lcl_2 = (_slot_0, _slot_1, _slot_2)
                         lcl_2 = prim__mk__ast('doubleQuotedStr', lcl_2)
                         _slot_local__1 = lcl_2
                         lcl_2 = (True, _slot_local__1)
                     lcl_1 = lcl_2
                 lcl_0 = lcl_1
             elif (lcl_1 == 6):
                 lcl_1 = parse_args(prim__state, prim__tokens)
                 _slot_1_check = lcl_1
                 lcl_1 = _slot_1_check[0]
                 lcl_1 = (lcl_1 is False)
                 if lcl_1:
                     lcl_1 = _slot_1_check
                 else:
                     lcl_2 = _slot_1_check[1]
                     lcl_2 = lcl_2
                     _slot_1 = lcl_2
                     lcl_2 = 3
                     try:
                         _py_local_tk = prim__tokens.array[
                             prim__tokens.offset]
                         if (_py_local_tk.idint is lcl_2):
                             prim__tokens.offset += 1
                         else:
                             _py_local_tk = None
                     except IndexError:
                         _py_local_tk = None
                     lcl_2 = _py_local_tk
                     _slot_2 = lcl_2
                     lcl_2 = (_slot_2 is None)
                     if lcl_2:
                         lcl_2 = prim__tokens.offset
                         lcl_2 = (lcl_2, 'quote " not match')
                         lcl_2 = prim__cons(lcl_2, prim__nil)
                         lcl_2 = lcl_2
                         lcl_2 = (False, lcl_2)
                     else:
                         lcl_2 = (_slot_0, _slot_1, _slot_2)
                         lcl_2 = prim__mk__ast('doubleQuotedStr', lcl_2)
                         _slot_local__1 = lcl_2
                         lcl_2 = (True, _slot_local__1)
                     lcl_1 = lcl_2
                 lcl_0 = lcl_1
             else:
                 lcl_1 = (_off_1, 'doubleQuotedStr lookahead failed')
                 lcl_1 = prim__cons(lcl_1, prim__nil)
                 lcl_1 = lcl_1
                 lcl_1 = (False, lcl_1)
                 lcl_0 = lcl_1
         else:
             lcl_0 = (_off_1, 'doubleQuotedStr got EOF')
             lcl_1 = prim__cons(lcl_0, prim__nil)
             lcl_0 = lcl_1
             lcl_0 = (False, lcl_0)
     return lcl_0
示例#10
0
 def parse_ch(prim__state, prim__tokens):
     lcl_0 = prim__tokens.offset
     _off_0 = lcl_0
     lcl_0 = (len(prim__tokens.array) > (prim__tokens.offset + 0))
     if lcl_0:
         lcl_2 = prim__tokens.array[(prim__tokens.offset + 0)]
         lcl_2 = lcl_2.idint
         if (lcl_2 == 4):
             _py_local_i = prim__tokens.offset
             _py_local_t = prim__tokens.array[_py_local_i]
             prim__tokens.offset = (_py_local_i + 1)
             lcl_2 = _py_local_t
             _slot_0 = lcl_2
             lcl_2 = prim__tokens.offset
             _off_1 = lcl_2
             lcl_2 = (len(prim__tokens.array) > (prim__tokens.offset + 0))
             if lcl_2:
                 lcl_3 = prim__tokens.array[(prim__tokens.offset + 0)]
                 lcl_3 = lcl_3.idint
                 if (lcl_3 == 4):
                     _py_local_i = prim__tokens.offset
                     _py_local_t = prim__tokens.array[_py_local_i]
                     prim__tokens.offset = (_py_local_i + 1)
                     lcl_3 = _py_local_t
                     _slot_1 = lcl_3
                     lcl_3 = (_slot_0, _slot_1)
                     lcl_3 = prim__mk__ast('ch', lcl_3)
                     _slot_local__1 = lcl_3
                     lcl_3 = (True, _slot_local__1)
                     lcl_2 = lcl_3
                 elif (lcl_3 == 3):
                     _py_local_i = prim__tokens.offset
                     _py_local_t = prim__tokens.array[_py_local_i]
                     prim__tokens.offset = (_py_local_i + 1)
                     lcl_3 = _py_local_t
                     _slot_1 = lcl_3
                     lcl_3 = (_slot_0, _slot_1)
                     lcl_3 = prim__mk__ast('ch', lcl_3)
                     _slot_local__1 = lcl_3
                     lcl_3 = (True, _slot_local__1)
                     lcl_2 = lcl_3
                 else:
                     lcl_3 = (_off_1, 'ch lookahead failed')
                     lcl_3 = prim__cons(lcl_3, prim__nil)
                     lcl_3 = lcl_3
                     lcl_3 = (False, lcl_3)
                     lcl_2 = lcl_3
             else:
                 lcl_2 = (_off_1, 'ch got EOF')
                 lcl_2 = prim__cons(lcl_2, prim__nil)
                 lcl_2 = lcl_2
                 lcl_2 = (False, lcl_2)
             lcl_1 = lcl_2
         elif (lcl_2 == 6):
             _py_local_i = prim__tokens.offset
             _py_local_t = prim__tokens.array[_py_local_i]
             prim__tokens.offset = (_py_local_i + 1)
             lcl_2 = _py_local_t
             _slot_0 = lcl_2
             lcl_2 = (_slot_0, )
             lcl_2 = prim__mk__ast('ch', lcl_2)
             _slot_local__1 = lcl_2
             lcl_2 = (True, _slot_local__1)
             lcl_1 = lcl_2
         else:
             lcl_2 = (_off_0, 'ch lookahead failed')
             lcl_2 = prim__cons(lcl_2, prim__nil)
             lcl_2 = lcl_2
             lcl_2 = (False, lcl_2)
             lcl_1 = lcl_2
         lcl_0 = lcl_1
     else:
         lcl_1 = (_off_0, 'ch got EOF')
         lcl_2 = prim__cons(lcl_1, prim__nil)
         lcl_1 = lcl_2
         lcl_1 = (False, lcl_1)
         lcl_0 = lcl_1
     return lcl_0