コード例 #1
0
        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
コード例 #2
0
        ]

    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
コード例 #3
0
ファイル: pyterm.py プロジェクト: ahjulstad/mathdom-python3
        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')
コード例 #4
0
ファイル: sqlterm.py プロジェクト: ahjulstad/mathdom-python3
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())
コード例 #5
0
ファイル: sqlterm.py プロジェクト: linearregression/mathdom
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())