Пример #1
0
def error_exp():
    def process(parsed):
        (((_, _), var), _) = parsed
        return ErrorExpr(var)

    return keyword('ERROR') + keyword('(') + \
           Lazy(aexp) + \
           keyword(")") ^ process
Пример #2
0
def len_exp():
    def process(parsed):
        (((_, _), var), _) = parsed
        return LenExpr(var)

    return keyword('LEN') + keyword('(') + \
           Lazy(aexp) + \
           keyword(")") ^ process
Пример #3
0
def if_stmt():
    def process(parsed):
        (((((_, condition), _), true_stmt), false_parsed), _) = parsed
        if false_parsed:
            (_, false_stmt) = false_parsed
        else:
            false_stmt = None
        return IfStatement(condition, true_stmt, false_stmt)

    return keyword('IF') + keyword('(') + bexp() + keyword(';') + both() + Opt(
        keyword(';') + both()) + keyword(')') ^ process
Пример #4
0
def split_extract_exp():
    def process(parsed):
        (((((((_, _), value), _), separator), _), segment), _) = parsed
        return SplitExtractExpr(value, separator, segment)

    return keyword('SPLIT') + keyword('(') + \
           Lazy(aexp) + \
           keyword(',') + \
           Lazy(aexp) + \
           keyword(',') + \
           Lazy(aexp) + \
           keyword(')') ^ process
Пример #5
0
def concat_exp():
    def process(parsed):
        (((((((((_, _), string_1)), _), string_2), _), string_3), _)) = parsed
        return ConcatExpr(string_1, string_2, string_3)

    return keyword('CONCAT') + keyword('(') + \
           Lazy(aexp) + \
           keyword(',') + \
           Lazy(aexp) + \
           keyword(',') + \
           Lazy(aexp) + \
           keyword(')') ^ process
Пример #6
0
def slice_exp():
    def process(parsed):
        (((((((((_, _), var)), _), start), _), end), _)) = parsed
        return SliceExpr(var, start, end)

    return keyword('SLICE') + keyword('(') + \
           Lazy(aexp) + \
           keyword(',') + \
           (num_int ^ (lambda i: IntAexp(i))) + \
           keyword(',') + \
           (num_int ^ (lambda i: IntAexp(i))) + \
           keyword(')') ^ process
Пример #7
0
def orm_count_if_exp():
    def process(parsed):
        (((((((((((((((((_, _), model), _), manager), _), var_name_search), _),
                  var_value_search), _), var_name), _), var_value), _), signo),
           _), json_field_name), _) = parsed
        return CountIfExpr(model, manager, var_name_search, var_value_search,
                           var_name, var_value, signo, json_field_name)

    return keyword('countif') + keyword('(') + \
           option() + keyword(',') + option() + keyword(',') + option() + \
           keyword(',') + option() + keyword(',') + option() + keyword(',') + option() + keyword(',') + \
           option() + keyword(',') + option() + keyword(')') ^ process
Пример #8
0
def orm_sum_if_exp():
    def process(parsed):
        (((((((((((((((((((_, _), model), _), manager), _), signo), _),
                    var_name), _), var_value), _), var_name_search), _),
              var_value_search), _), var_result), _), json_field_name),
         _) = parsed
        return SumIfExpr(model, manager, signo, var_name, var_value,
                         var_name_search, var_value_search, var_result,
                         json_field_name)

    return keyword('sumif') + keyword('(') + \
           option() + keyword(',') + option() + keyword(',') + option() + keyword(',') + option() + keyword(',') + \
           option() + keyword(',') + option() + keyword(',') + \
           (num_int ^ (lambda i: IntAexp(i)) | (variable ^ (lambda v: VarAexp(v)))) + keyword(',') + option() + \
           keyword(',') + option() + keyword(')') ^ process
Пример #9
0
def orm_directlink_exp():
    def process(parsed):
        (((((((((((((((_, _), model), _), manager), _), var_name_search), _),
                var_value_search), _), row), _), var_result), _),
          json_field_name), _) = parsed
        return DirectLinkExpr(model, manager, var_name_search,
                              var_value_search, row, var_result,
                              json_field_name)

    return keyword('directlink') + keyword('(') + \
           option() + keyword(',') + option() + keyword(',') + option() + keyword(',') + option() + \
           keyword(',') + option() + keyword(',') + option() + keyword(',') + option() + keyword(')') ^ process
Пример #10
0
def assign_stmt():
    def process(parsed):
        ((name, _), exp) = parsed
        return AssignStatement(name, exp)

    return variable + keyword(':=') + (aexp() | if_stmt()) ^ process
Пример #11
0
def stmt_list():
    separator = keyword(':') ^ (lambda x: lambda l, r: CompoundStatement(l, r))
    return Exp(stmt(), separator)
Пример #12
0
def aexp_group():
    return keyword('(') + Lazy(aexp) + keyword(')') ^ process_group
Пример #13
0
def bexp_not():
    return keyword('NOT') + Lazy(bexp_term) ^ (
        lambda parsed: NotBexp(parsed[1]))
Пример #14
0
def orm_vlookup_exp():
    def process(parsed):
        (((((((((((((((((((_, _), model), _), manager), _), var_name_search),
                     _), var_value_search), _), signo), _), var_name), _),
              var_value), _), var_result), _), json_field_name), _) = parsed
        return VlookupExpr(model, manager, var_name_search, var_value_search,
                           var_name, var_value, signo, var_result,
                           json_field_name)

    return keyword('vlookup') + keyword('(') + \
           option() + keyword(',') + option() + keyword(',') + option() + keyword(',') + option() + \
           keyword(',') + option() + keyword(',') + option() + keyword(',') + option() + \
           keyword(',') + option() + keyword(',') + option() + keyword(')') ^ process
Пример #15
0
def any_operator_in_list(ops):
    op_parsers = [keyword(op) for op in ops]
    parser = reduce(lambda l, r: l | r, op_parsers)
    return parser