def compositeExpression(rule):
    rule | expression | (OP, '(', expressionList, ')')
    rule.astAttrs = {
        'operator': OP,
        'expressionList': expressionList,
        'expression': expression
    }


compositeExpression.astName = 'CompositeExpression'

grammar = Grammar(start=compositeExpression, tokens=[SYMBOL, OP],
                  ignore=[WHITE, NEWLINE], ast_tokens=[STRING])
filterParser = Translator(grammar)
ast = grammar.ast_classes

opTable = {
    'and': And,
    'or': Or,
    'not': Not,
    'eq': eq,
    'ne': ne,
    'lt': lt,
    'gt': gt,
    'ge': ge,
    'le': le,
    'wcard': wcard
}
Exemple #2
0
dble_header_body.ast_name = 'DbleHeaderBody'


def body(rule):
    rule | ("{", units, "}")
    rule.astAttrs = {"units": units}


body.ast_name = 'Body'

grammar = Grammar(start=toplevel,
                  tokens=[HEADER, WHITE, NEWLINE, ANY],
                  ignore=[WHITE],
                  ast_tokens=[STRING])

Dict = Translator(grammar)
ast = grammar.ast_classes


@Dict.translates(ast.Toplevel)
def t_toplevel():
    return Dict.translate(node.units)


@Dict.translates(ast.Units)
def t_units(node):
    dic = {}
    # h1, h2, b = None, None, None
    for unit in node.units:
        tu = Dict.translate(unit)
        typ = tu[0]
Exemple #3
0
    rule | ('{', [commas((STRING, ':', value))], '}')
    rule.astAttrs = {'keys': [STRING], 'values': [value]}
dict_.astName = 'Dict'

def list_(rule):
    rule | ('[', [commas(value)], ']')
    rule.astAttrs = {'values': [value]}
list_.astName = 'List'

grammar = Grammar(start=value,
                  tokens=[SYMBOL],
                  ignore=[WHITE, NEWLINE],
                  ast_tokens=[STRING, TFN, NUMBER])

# translator stuff
JSON = Translator(grammar)

ast = grammar.ast_classes

@JSON.translates(ast.Dict)
def t_dict(node):
    return dict((JSON.translate(key), JSON.translate(value))\
                 for (key, value) in zip(node.keys, node.values))

@JSON.translates(ast.List)
def t_list(node):
    return list(JSON.translate(value) for value in node.values)

@JSON.translates(STRING)
def t_string(node):
    return node.value[1:-1].decode('string_escape')
Exemple #4
0
########NEW FILE########
__FILENAME__ = ctranslator
#!/usr/bin/env python

from codetalker.pgm import Translator, tokens
from errors import TranslateError
from grammar import grammar as ccssgrammar, declare_args
import grammar
import operator
import values
import consts

ccssgrammar.load_rule(declare_args)

CCSS = Translator(ccssgrammar,
                  vbls=[consts.defaults.copy()],
                  rule_stack=[],
                  indent=4)

ast = ccssgrammar.ast_classes


def find_variable(name, scope):
    for vbls in scope.vbls:
        if name in vbls:
            return vbls[name]
    raise TranslateError('Undefined mixin %s' % name)


def handle_body(tree, scope):
    text, after = '', ''
    for node in tree.body: