def save_frame(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos,
                             'save_frame', [])
     save_heading = self._scan('save_heading')
     savehead = save_heading[5:]
     savebc = StarFile()
     savebc.NewBlock(savehead, StarBlock(overwrite=False))
     while self._peek(
             'save_end', 'save_heading', 'LBLOCK', 'data_name', 'END',
             'data_heading') in ['save_heading', 'LBLOCK', 'data_name']:
         _token = self._peek('save_heading', 'LBLOCK', 'data_name')
         if _token != 'save_heading':
             dataseq = self.dataseq(savebc[savehead], _context)
         else:  # == 'save_heading'
             save_frame = self.save_frame(_context)
             savebc.merge_fast(save_frame, parent=savehead)
     if self._peek() not in [
             'save_end', 'save_heading', 'LBLOCK', 'data_name', 'END',
             'data_heading'
     ]:
         raise yappsrt.SyntaxError(
             charpos=self._scanner.get_prev_char_pos(),
             context=_context,
             msg='Need one of ' + ', '.join([
                 'save_end', 'save_heading', 'LBLOCK', 'data_name', 'END',
                 'data_heading'
             ]))
     save_end = self._scan('save_end')
     return monitor('save_frame', savebc)
 def loopvalues(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos,
                             'loopvalues', [])
     data_value = self.data_value(_context)
     dataloop = [data_value]
     while self._peek('data_value_1', 'triple_quote_data_value',
                      'single_quote_data_value', 'start_sc_line', 'o_s_b',
                      'o_c_b', 'LBLOCK', 'data_name', 'save_heading',
                      'save_end', 'END', 'data_heading') in [
                          'data_value_1', 'triple_quote_data_value',
                          'single_quote_data_value', 'start_sc_line',
                          'o_s_b', 'o_c_b'
                      ]:
         data_value = self.data_value(_context)
         dataloop.append(monitor('loopval', data_value))
     if self._peek() not in [
             'data_value_1', 'triple_quote_data_value',
             'single_quote_data_value', 'start_sc_line', 'o_s_b', 'o_c_b',
             'LBLOCK', 'data_name', 'save_heading', 'save_end', 'END',
             'data_heading'
     ]:
         raise yappsrt.SyntaxError(
             charpos=self._scanner.get_prev_char_pos(),
             context=_context,
             msg='Need one of ' + ', '.join([
                 'data_value_1', 'triple_quote_data_value',
                 'single_quote_data_value', 'start_sc_line', 'o_s_b',
                 'o_c_b', 'LBLOCK', 'data_name', 'save_heading', 'save_end',
                 'END', 'data_heading'
             ]))
     return dataloop
Exemplo n.º 3
0
 def input(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos, 'input', [])
     _token = self._peek('END', 'data_heading')
     if _token == 'data_heading':
         dblock = self.dblock(_context)
         allblocks = StarFile()
         allblocks.NewBlock(dblock[0],
                            blockcontents=dblock[1],
                            fix=False,
                            replace=False)
         while self._peek('END', 'data_heading') == 'data_heading':
             dblock = self.dblock(_context)
             allblocks.NewBlock(dblock[0],
                                blockcontents=monitor('input', dblock[1]),
                                fix=False,
                                replace=False)
         if self._peek() not in ['END', 'data_heading']:
             raise yappsrt.SyntaxError(
                 charpos=self._scanner.get_prev_char_pos(),
                 context=_context,
                 msg='Need one of ' + ', '.join(['END', 'data_heading']))
         END = self._scan('END')
     else:  # == 'END'
         END = self._scan('END')
         allblocks = StarFile()
     return allblocks
Exemplo n.º 4
0
 def nest_curly_bracket_expr(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos,
                             'nest_curly_bracket_expr', [])
     o_c_b = self._scan('o_c_b')
     _token = self._peek('dat_val_nocomma_nocurl', 'o_s_b', 'o_c_b',
                         'o_r_b')
     if _token == 'dat_val_nocomma_nocurl':
         dat_val_nocomma_nocurl = self._scan('dat_val_nocomma_nocurl')
     else:  # in ['o_s_b', 'o_c_b', 'o_r_b']
         nested_bracket_expression = self.nested_bracket_expression(
             _context)
     while self._peek('c_c_b', '","', 'c_s_b', 'c_r_b') == '","':
         self._scan('","')
         _token = self._peek('dat_val_nocomma_nocurl', 'o_s_b', 'o_c_b',
                             'o_r_b')
         if _token == 'dat_val_nocomma_nocurl':
             dat_val_nocomma_nocurl = self._scan('dat_val_nocomma_nocurl')
         else:  # in ['o_s_b', 'o_c_b', 'o_r_b']
             nested_bracket_expression = self.nested_bracket_expression(
                 _context)
     if self._peek() not in ['c_c_b', '","', 'c_s_b', 'c_r_b']:
         raise yappsrt.SyntaxError(
             charpos=self._scanner.get_prev_char_pos(),
             context=_context,
             msg='Need one of ' +
             ', '.join(['","', 'c_c_b', 'c_s_b', 'c_r_b']))
     c_c_b = self._scan('c_c_b')
Exemplo n.º 5
0
 def dataseq(self, starblock, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos, 'dataseq', [starblock])
     data = self.data(starblock, _context)
     while self._peek('LBLOCK', 'data_name', 'save_end', 'save_heading', 'END', 'data_heading') in ['LBLOCK', 'data_name']:
         data = self.data(starblock, _context)
     if self._peek() not in ['LBLOCK', 'data_name', 'save_end', 'save_heading', 'END', 'data_heading']:
         raise yappsrt.SyntaxError(charpos=self._scanner.get_prev_char_pos(), context=_context, msg='Need one of ' + ', '.join(['LBLOCK', 'data_name', 'save_end', 'save_heading', 'END', 'data_heading']))
Exemplo n.º 6
0
 def dblock(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos, 'dblock',
                             [])
     data_heading = self._scan('data_heading')
     heading = data_heading[5:]
     thisblock = StarBlock(overwrite=False)
     while self._peek(
             'save_heading', 'save_end', 'LBLOCK', 'data_name', 'END',
             'data_heading') in ['save_heading', 'LBLOCK', 'data_name']:
         _token = self._peek('save_heading', 'LBLOCK', 'data_name')
         if _token != 'save_heading':
             dataseq = self.dataseq(thisblock, _context)
         else:  # == 'save_heading'
             save_frame = self.save_frame(_context)
             thisblock["saves"].NewBlock(save_frame[0],
                                         save_frame[1],
                                         fix=False,
                                         replace=True)
     if self._peek() not in [
             'save_heading', 'save_end', 'LBLOCK', 'data_name', 'END',
             'data_heading'
     ]:
         raise yappsrt.SyntaxError(
             charpos=self._scanner.get_prev_char_pos(),
             context=_context,
             msg='Need one of ' + ', '.join([
                 'save_heading', 'LBLOCK', 'data_name', 'save_end', 'END',
                 'data_heading'
             ]))
     return (heading, monitor('dblock', thisblock))
Exemplo n.º 7
0
 def nest_round_bracket_expr(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos,
                             'nest_round_bracket_expr', [])
     o_r_b = self._scan('o_r_b')
     _token = self._peek('dat_val_nocomma_nornd', 'o_s_b', 'o_c_b', 'o_r_b')
     if _token == 'dat_val_nocomma_nornd':
         dat_val_nocomma_nornd = self._scan('dat_val_nocomma_nornd')
         this_tuple = [stripstring(dat_val_nocomma_nornd)]
     else:  # in ['o_s_b', 'o_c_b', 'o_r_b']
         nested_bracket_expression = self.nested_bracket_expression(
             _context)
         this_tuple = [nested_bracket_expression]
     while self._peek('c_r_b', '","') == '","':
         self._scan('","')
         _token = self._peek('dat_val_nocomma_nornd', 'o_s_b', 'o_c_b',
                             'o_r_b')
         if _token == 'dat_val_nocomma_nornd':
             dat_val_nocomma_nornd = self._scan('dat_val_nocomma_nornd')
             this_tuple.append(stripstring(dat_val_nocomma_nornd))
         else:  # in ['o_s_b', 'o_c_b', 'o_r_b']
             nested_bracket_expression = self.nested_bracket_expression(
                 _context)
             this_tuple.append(nested_bracket_expression)
     if self._peek() not in ['c_r_b', '","']:
         raise yappsrt.SyntaxError(
             charpos=self._scanner.get_prev_char_pos(),
             context=_context,
             msg='Need one of ' + ', '.join(['","', 'c_r_b']))
     c_r_b = self._scan('c_r_b')
     return tuple(this_tuple)
 def dblock(self, prepared, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos, 'dblock',
                             [prepared])
     data_heading = self._scan('data_heading')
     heading = data_heading[5:]
     thisbc = StarFile(characterset='unicode', standard=prepared.standard)
     thisbc.NewBlock(heading, StarBlock(overwrite=False))
     while self._peek(
             'save_heading', 'LBLOCK', 'data_name', 'save_end', 'END',
             'data_heading') in ['save_heading', 'LBLOCK', 'data_name']:
         _token = self._peek('save_heading', 'LBLOCK', 'data_name')
         if _token != 'save_heading':
             dataseq = self.dataseq(thisbc[heading], _context)
         else:  # == 'save_heading'
             save_frame = self.save_frame(_context)
             thisbc.merge_fast(save_frame, parent=heading)
     if self._peek() not in [
             'save_heading', 'LBLOCK', 'data_name', 'save_end', 'END',
             'data_heading'
     ]:
         raise yappsrt.SyntaxError(
             charpos=self._scanner.get_prev_char_pos(),
             context=_context,
             msg='Need one of ' + ', '.join([
                 'save_heading', 'LBLOCK', 'data_name', 'save_end', 'END',
                 'data_heading'
             ]))
     thisbc[heading].setmaxnamelength(thisbc[heading].maxnamelength)
     return (monitor('dblock', thisbc))
Exemplo n.º 9
0
 def loopvalues(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos,
                             'loopvalues', [])
     data_value = self.data_value(_context)
     dataloop = [[data_value]]
     while self._peek('data_value_1', 'data_value_old', 'STOP',
                      'start_sc_line', 'LBLOCK', 'data_name', 'save_end',
                      'save_heading', 'END', 'data_heading') in [
                          'data_value_1', 'data_value_old', 'STOP',
                          'start_sc_line'
                      ]:
         _token = self._peek('data_value_1', 'data_value_old', 'STOP',
                             'start_sc_line')
         if _token != 'STOP':
             data_value = self.data_value(_context)
             dataloop[-1].append(monitor('loopval', data_value))
         else:  # == 'STOP'
             STOP = self._scan('STOP')
             dataloop.append([])
     if self._peek() not in [
             'data_value_1', 'data_value_old', 'STOP', 'start_sc_line',
             'LBLOCK', 'data_name', 'save_end', 'save_heading', 'END',
             'data_heading'
     ]:
         raise yappsrt.SyntaxError(
             charpos=self._scanner.get_prev_char_pos(),
             context=_context,
             msg='Need one of ' + ', '.join([
                 'data_value_1', 'data_value_old', 'STOP', 'start_sc_line',
                 'LBLOCK', 'data_name', 'save_end', 'save_heading', 'END',
                 'data_heading'
             ]))
     return dataloop
Exemplo n.º 10
0
 def curly_bracket_expr(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos,
                             'curly_bracket_expr', [])
     o_c_b = self._scan('o_c_b')
     table_as_list = []
     while self._peek('c_c_b', 'triple_quote_data_value',
                      'single_quote_data_value', '","') in [
                          'triple_quote_data_value',
                          'single_quote_data_value'
                      ]:
         delimited_data_value = self.delimited_data_value(_context)
         table_as_list = [delimited_data_value]
         self._scan('":"')
         data_value = self.data_value(_context)
         table_as_list.append(data_value)
         while self._peek('","', 'triple_quote_data_value',
                          'single_quote_data_value', 'c_c_b') == '","':
             self._scan('","')
             delimited_data_value = self.delimited_data_value(_context)
             table_as_list.append(delimited_data_value)
             self._scan('":"')
             data_value = self.data_value(_context)
             table_as_list.append(data_value)
         if self._peek() not in [
                 '","', 'triple_quote_data_value',
                 'single_quote_data_value', 'c_c_b'
         ]:
             raise yappsrt.SyntaxError(
                 charpos=self._scanner.get_prev_char_pos(),
                 context=_context,
                 msg='Need one of ' + ', '.join([
                     '","', 'triple_quote_data_value',
                     'single_quote_data_value', 'c_c_b'
                 ]))
     if self._peek() not in [
             'c_c_b', 'triple_quote_data_value', 'single_quote_data_value',
             '","'
     ]:
         raise yappsrt.SyntaxError(
             charpos=self._scanner.get_prev_char_pos(),
             context=_context,
             msg='Need one of ' + ', '.join([
                 'triple_quote_data_value', 'single_quote_data_value',
                 'c_c_b', '","'
             ]))
     c_c_b = self._scan('c_c_b')
     return StarDict(pairwise(table_as_list))
Exemplo n.º 11
0
 def square_bracket_expr(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos,
                             'square_bracket_expr', [])
     o_s_b = self._scan('o_s_b')
     this_list = []
     while self._peek('c_s_b', 'data_value_1', '","',
                      'triple_quote_data_value', 'single_quote_data_value',
                      'start_sc_line', 'o_s_b',
                      'o_c_b') not in ['c_s_b', '","']:
         data_value = self.data_value(_context)
         this_list.append(data_value)
         while self._peek('","', 'data_value_1', 'c_s_b',
                          'triple_quote_data_value',
                          'single_quote_data_value', 'start_sc_line',
                          'o_s_b', 'o_c_b') == '","':
             self._scan('","')
             data_value = self.data_value(_context)
             this_list.append(data_value)
         if self._peek() not in [
                 '","', 'data_value_1', 'c_s_b', 'triple_quote_data_value',
                 'single_quote_data_value', 'start_sc_line', 'o_s_b',
                 'o_c_b'
         ]:
             raise yappsrt.SyntaxError(
                 charpos=self._scanner.get_prev_char_pos(),
                 context=_context,
                 msg='Need one of ' + ', '.join([
                     '","', 'data_value_1', 'c_s_b',
                     'triple_quote_data_value', 'single_quote_data_value',
                     'start_sc_line', 'o_s_b', 'o_c_b'
                 ]))
     if self._peek() not in [
             'c_s_b', 'data_value_1', '","', 'triple_quote_data_value',
             'single_quote_data_value', 'start_sc_line', 'o_s_b', 'o_c_b'
     ]:
         raise yappsrt.SyntaxError(
             charpos=self._scanner.get_prev_char_pos(),
             context=_context,
             msg='Need one of ' + ', '.join([
                 'data_value_1', 'c_s_b', 'triple_quote_data_value',
                 'single_quote_data_value', 'start_sc_line', '","', 'o_s_b',
                 'o_c_b'
             ]))
     c_s_b = self._scan('c_s_b')
     return StarList(this_list)
Exemplo n.º 12
0
 def save_frame(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos, 'save_frame', [])
     save_heading = self._scan('save_heading')
     savehead = save_heading[5:];savebody = StarBlock(overwrite=False)
     while self._peek('save_end', 'LBLOCK', 'data_name', 'save_heading', 'END', 'data_heading') in ['LBLOCK', 'data_name']:
         dataseq = self.dataseq(savebody, _context)
     if self._peek() not in ['save_end', 'LBLOCK', 'data_name', 'save_heading', 'END', 'data_heading']:
         raise yappsrt.SyntaxError(charpos=self._scanner.get_prev_char_pos(), context=_context, msg='Need one of ' + ', '.join(['save_end', 'LBLOCK', 'data_name', 'save_heading', 'END', 'data_heading']))
     save_end = self._scan('save_end')
     return (savehead,monitor('save_frame',savebody))
Exemplo n.º 13
0
 def sc_lines_of_text(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos, 'sc_lines_of_text', [])
     start_sc_line = self._scan('start_sc_line')
     lines = start_sc_line
     while self._peek('end_sc_line', 'sc_line_of_text') == 'sc_line_of_text':
         sc_line_of_text = self._scan('sc_line_of_text')
         lines = lines+sc_line_of_text
     if self._peek() not in ['end_sc_line', 'sc_line_of_text']:
         raise yappsrt.SyntaxError(charpos=self._scanner.get_prev_char_pos(), context=_context, msg='Need one of ' + ', '.join(['sc_line_of_text', 'end_sc_line']))
     end_sc_line = self._scan('end_sc_line')
     return monitor('sc_line_of_text',lines+end_sc_line)
Exemplo n.º 14
0
 def loopfield(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos, 'loopfield',
                             [])
     toploop = []
     while self._peek('data_name', 'data_value_1',
                      'start_sc_line') == 'data_name':
         data_name = self._scan('data_name')
         toploop.append(data_name)
     if self._peek() not in ['data_name', 'data_value_1', 'start_sc_line']:
         raise yappsrt.SyntaxError(
             charpos=self._scanner.get_prev_char_pos(),
             context=_context,
             msg='Need one of ' +
             ', '.join(['data_name', 'data_value_1', 'start_sc_line']))
     return toploop
Exemplo n.º 15
0
 def loopfield(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos, 'loopfield', [])
     toploop=LoopBlock(dimension=1,overwrite=False);curloop=toploop;poploop=None;dim=1
     while self._peek('data_name', 'LBLOCK', 'STOP', 'data_value_1', 'start_sc_line') not in ['data_value_1', 'start_sc_line']:
         _token = self._peek('data_name', 'LBLOCK', 'STOP')
         if _token == 'data_name':
             data_name = self._scan('data_name')
             curloop[data_name]=[]
         elif _token == 'LBLOCK':
             LBLOCK = self._scan('LBLOCK')
             dim=dim+1;newloop=LoopBlock(dimension=dim,overwrite=False);poploop=curloop;curloop.insert_loop(newloop,audit=False);curloop=newloop
         else: # == 'STOP'
             STOP = self._scan('STOP')
             curloop=poploop;dim=dim-1
     if self._peek() not in ['data_name', 'LBLOCK', 'STOP', 'data_value_1', 'start_sc_line']:
         raise yappsrt.SyntaxError(charpos=self._scanner.get_prev_char_pos(), context=_context, msg='Need one of ' + ', '.join(['data_name', 'LBLOCK', 'STOP', 'data_value_1', 'start_sc_line']))
     return toploop
Exemplo n.º 16
0
 def input(self, prepared, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos, 'input',
                             [prepared])
     _token = self._peek('END', 'data_heading')
     if _token == 'data_heading':
         dblock = self.dblock(prepared, _context)
         allblocks = prepared
         allblocks.merge_fast(dblock)
         while self._peek('END', 'data_heading') == 'data_heading':
             dblock = self.dblock(prepared, _context)
             allblocks.merge_fast(dblock)
         if self._peek() not in ['END', 'data_heading']:
             raise yappsrt.SyntaxError(
                 charpos=self._scanner.get_prev_char_pos(),
                 context=_context,
                 msg='Need one of ' + ', '.join(['END', 'data_heading']))
         END = self._scan('END')
     else:  # == 'END'
         END = self._scan('END')
         allblocks = prepared
     return allblocks
Exemplo n.º 17
0
 def square_bracket_expr(self, _parent=None):
     _context = self.Context(_parent, self._scanner, self._pos,
                             'square_bracket_expr', [])
     o_s_b = self._scan('o_s_b')
     _token = self._peek('dat_val_nocomma_nosq', 'o_s_b', 'o_c_b', 'o_r_b')
     if _token == 'dat_val_nocomma_nosq':
         dat_val_nocomma_nosq = self._scan('dat_val_nocomma_nosq')
         this_list = [stripstring(dat_val_nocomma_nosq)]
         if self._peek('dat_val_internal_sq', '","',
                       'c_s_b') == 'dat_val_internal_sq':
             dat_val_internal_sq = self._scan('dat_val_internal_sq')
             this_list[0] += dat_val_internal_sq
             if self._peek('"\\*"', '","', 'c_s_b') == '"\\*"':
                 self._scan('"\\*"')
                 this_list[0] += "*"
     else:  # in ['o_s_b', 'o_c_b', 'o_r_b']
         nested_bracket_expression = self.nested_bracket_expression(
             _context)
         this_list = [nested_bracket_expression]
     while self._peek('c_s_b', '","') == '","':
         self._scan('","')
         _token = self._peek('dat_val_nocomma_nosq', 'o_s_b', 'o_c_b',
                             'o_r_b')
         if _token == 'dat_val_nocomma_nosq':
             dat_val_nocomma_nosq = self._scan('dat_val_nocomma_nosq')
             this_list.append(stripstring(dat_val_nocomma_nosq))
         else:  # in ['o_s_b', 'o_c_b', 'o_r_b']
             nested_bracket_expression = self.nested_bracket_expression(
                 _context)
             this_list.append(nested_bracket_expression)
     if self._peek() not in ['c_s_b', '","']:
         raise yappsrt.SyntaxError(
             charpos=self._scanner.get_prev_char_pos(),
             context=_context,
             msg='Need one of ' + ', '.join(['","', 'c_s_b']))
     c_s_b = self._scan('c_s_b')
     return StarList(this_list)