item = self.p_arithmetic_exp() p_colon_interval = item + pyparsing.Suppress(':') + item p_colon_interval.setParseAction(self._parse_colon_interval) p_values = self.p_list(item) | self.p_arithmetic_interval(item) | p_colon_interval return (pyparsing.Suppress('(') + p_values + pyparsing.Suppress(')')) | p_values term_parsers.register_converter('slosl_foreach_list', SloslForeachListParser().p_foreach_list()) class SloslForeachListSerializer(InfixTermBuilder): def _handle_list(self, operator, operands, status): assert operator == u'list' return [ u'%s' % u','.join(operands) ] tree_converters.register_converter('slosl_foreach_list', SloslForeachListSerializer()) class SLOSLEditor(object): VALID_FUNCTIONS = ('lowest', 'highest', 'closest', 'furthest') def __init__(self): self.__setup_child_calls() self.__init_visible_widgets() self.__init_text_verifiers() def __setup_child_calls(self): try: self.__setStatus = self.setStatus except AttributeError: def dummy(*args): pass
] def _handle_case(self, operator, operands, affin_status): assert operator == 'case' result = [operands[0], 'and', operands[1]] if len(operands) > 2: result.append('or') result.append(operands[2]) return result def _handle_interval(self, operator, operands, affin): assert operator[:9] == u'interval:' return [self._INTERVAL_NOTATION[operator[9:]] % tuple(operands)] tree_converters.register_converter('python', PyTermBuilder()) # PARSER from pyparsing import * class PyTermTokenizer(TermTokenizer): _CONSTANT_MAP = {u'math.e': u'e', u'math.pi': u'pi'} @cached def p_bool(self): p_bool = Keyword(u'True') | Keyword(u'False') p_bool.setName('bool') p_bool.setParseAction(self._parse_bool) return p_bool
return [ '(%s%s%sj)' % (real_str, (value.imag >= 0) and '+' or '', value.imag_str) ] def _handle_case(self, operator, operands, affin_status): assert operator == 'case' result = [ operands[0], 'and', operands[1] ] if len(operands) > 2: result.append('or') result.append(operands[2]) return result def _handle_interval(self, operator, operands, affin): assert operator[:9] == 'interval:' return [ self._INTERVAL_NOTATION[ operator[9:] ] % tuple(operands) ] tree_converters.register_converter('python', PyTermBuilder()) # PARSER from pyparsing import * class PyTermTokenizer(TermTokenizer): _CONSTANT_MAP = { 'math.e' : 'e', 'math.pi' : 'pi' } @cached def p_bool(self): p_bool = Keyword('True') | Keyword('False') p_bool.setName('bool')
from mathml.termbuilder import tree_converters, InfixTermBuilder __all__ = [ 'SqlTermBuilder' ] # BUILDER class SqlTermBuilder(InfixTermBuilder): _NAME_MAP = { 'e' : 'exp(1.0)', 'pi' : 'pi()', 'true' : 'TRUE', 'false' : 'FALSE' } def _handle_const_bool(self, operator, operands, affin): return [ operands[0] and 'TRUE' or 'FALSE' ] def _handle_const_complex(self, operator, operands, affin): raise NotImplementedError("Complex numbers cannot be converted to SQL.") def _handle_interval(self, operator, operands, affin): raise NotImplementedError("Intervals cannot be converted to SQL.") tree_converters.register_converter('sql', SqlTermBuilder())
from mathml.termbuilder import tree_converters, InfixTermBuilder __all__ = ['SqlTermBuilder'] # BUILDER class SqlTermBuilder(InfixTermBuilder): _NAME_MAP = { u'e': u'exp(1.0)', u'pi': u'pi()', u'true': u'TRUE', u'false': u'FALSE' } def _handle_const_bool(self, operator, operands, affin): return [operands[0] and 'TRUE' or 'FALSE'] def _handle_const_complex(self, operator, operands, affin): raise NotImplementedError, "Complex numbers cannot be converted to SQL." def _handle_interval(self, operator, operands, affin): raise NotImplementedError, "Intervals cannot be converted to SQL." tree_converters.register_converter('sql', SqlTermBuilder())