def _to_str(self, lean=False): regex_directives = {'comments', 'eol_comments', 'whitespace'} ustr_directives = {'comments', 'grammar'} string_directives = {'namechars'} directives = '' for directive, value in self.directives.items(): fmt = dict( name=directive, frame='/' if directive in regex_directives else '', value=(urepr(value) if directive in string_directives else ustr(value) if directive in ustr_directives else value), ) directives += '@@{name} :: {frame}{value}{frame}\n'.format(**fmt) if directives: directives += '\n' keywords = '\n'.join( '@@keyword :: ' + ' '.join(urepr(k) for k in c if k is not None) for c in chunks(sorted(self.keywords), 8)).strip() keywords = '\n\n' + keywords + '\n' if keywords else '' rules = ('\n\n'.join( ustr(rule._to_str(lean=lean)) for rule in self.rules)).rstrip() + '\n' return directives + keywords + rules
def _to_str(self, lean=False): regex_directives = {'comments', 'eol_comments', 'whitespace'} ustr_directives = {'comments', 'grammar'} string_directives = {'namechars'} directives = '' for directive, value in self.directives.items(): fmt = dict( name=directive, frame='/' if directive in regex_directives else '', value=( urepr(value) if directive in string_directives else ustr(value) if directive in ustr_directives else value ), ) directives += '@@{name} :: {frame}{value}{frame}\n'.format(**fmt) if directives: directives += '\n' keywords = '\n'.join( '@@keyword :: ' + ' '.join(urepr(k) for k in c if k is not None) for c in chunks(sorted(self.keywords), 8) ).strip() keywords = '\n\n' + keywords + '\n' if keywords else '' rules = ( '\n\n'.join(ustr(rule._to_str(lean=lean)) for rule in self.rules) ).rstrip() + '\n' return directives + keywords + rules