예제 #1
0
def operator_ast_gen(operator_ast):
    return operator_ast(FILTER_EXPRESSION_AST, LIST_AST)


def operator_str_gen(operator_str):
    return '%s %s %s' % (FILTER_EXPRESSION_STR, operator_str, LIST_STR)


DATE_STR = 'date("1")'
DATE_AST = AST.Date('1')

NAME_STR = 'ala ma kota'
NAME_AST = AST.Name(NAME_STR)

CONTEXT_STR = '{%s:%s}' % (NAME_STR, DATE_STR)
CONTEXT_AST = AST.Context([(NAME_AST, DATE_AST)])

FUNCTION_STR = 'function()%s' % CONTEXT_STR
FUNCTION_AST = AST.FunctionDefinition([], False, CONTEXT_AST)

LIST_STR = '[%s, %s]' % (FUNCTION_STR, CONTEXT_STR)
LIST_AST = AST.List([FUNCTION_AST, CONTEXT_AST])

INSTANCE_OF_STR = '%s  instance  of  ala.ma.kota' % LIST_STR
# INSTANCE_OF_STR = '%s instance of ala.ma.kota' % LIST_STR
INSTANCE_OF_AST = AST.InstanceOf(LIST_AST, AST.Type([AST.Name('ala.ma.kota')]))

FILTER_EXPRESSION_STR = '%s [%s]' % (LIST_STR, INSTANCE_OF_STR)
FILTER_EXPRESSION_AST = AST.FilterExpression(LIST_AST, INSTANCE_OF_AST)

CONJUNCTION_STR = '%s and %s' % (operator_str_gen('='), INSTANCE_OF_STR)
예제 #2
0
 def test_context(self):
     self.check_parser(CONTEXT_STR, CONTEXT_AST)
     self.check_parser('{{"ola":{ola_ctx}, "iza":{iza_ctx}}}'.format(ola_ctx=DATE_STR, iza_ctx=CONTEXT_STR),
                       AST.Context([('ola', DATE_AST), ('iza', CONTEXT_AST)]))
예제 #3
0
 def p_context(self, p):
     """context : '{' context_entries '}'
                | '{' empty_list      '}'"""
     p[0] = AST.Context(p[2])