예제 #1
0
 def visit_expression(self, node, children):
     if len(children) == 1:
         return children[0]
     if children[0] == '!':
         return Not(nodes=[children[1]])
     else:
         return And(nodes=[children[1]])
예제 #2
0
def expression_SA(parser, node, children):
    if len(children) > 1:
        if children[0] == '!':
            return Not(nodes=[children[1]])
        else:
            return And(nodes=[children[1]])
    else:
        return children[0]
예제 #3
0
    def visit_prefix(self, node, children):
        if len(children) == 2:
            if children[0] == NOT:
                retval = Not()
            else:
                retval = And()
            if type(children[1]) is list:
                retval.nodes = children[1]
            else:
                retval.nodes = [children[1]]
        else:
            # If there is no optional prefix reduce.
            retval = children[0]

        return retval
예제 #4
0
def ref_insert_middle():
    return [(literal('['), identifier, literal(']')),
            (literal('{'), identifier, literal('}'))], And(literal('<'))
예제 #5
0
def ref_insert_start():
    return literal('>'), And([literal('['), literal('{')])
예제 #6
0
def control_structure_potential_closing_brace() -> GrammarType:
    return [And(RegExMatch('[^{}]*}')), RegExMatch('[^{}]*')]
예제 #7
0
def disambiguated_prefix_operator_value() -> GrammarType:
    return "", Sequence(['++', '--'], And(['ref', compound_identifier]), skipws=False)
예제 #8
0
def func_body():        return [ ( labels, func_body_stmt ), func_body_stmt ], ZeroOrMore( statement_sep, func_body ), And( statement_sep, func_end_stmt )
def func_exit_stmt():   return 'Exit', 'Function'
예제 #9
0
def end_case_block():   return And( new_line, [ ( 'End', 'Select' ), 'Case' ] )
#def end_case_block():   return And( [ ( 'End', 'Select' ), 'Case' ] )
#def end_case_block():   return And( Optional( new_line ), [ ( 'End', 'Select' ), 'Case' ] )
def case_exprs():       return [ case_comparison, case_interval, case_value ], ZeroOrMore( ',', case_exprs )
예제 #10
0
def else_clauses():       return [ ( labels, statement ), statement ], ZeroOrMore( statement_sep, else_clauses ), And([( statement_sep, end_if_stmt ), end_if_stmt ])
def end_if_stmt():        return 'End', 'If'
예제 #11
0
def then_clauses():       return [ ( labels, statement ), statement ], ZeroOrMore( statement_sep, then_clauses ), And([ statement_sep, 'Else' ])
def else_clauses():       return [ ( labels, statement ), statement ], ZeroOrMore( statement_sep, else_clauses ), And([( statement_sep, end_if_stmt ), end_if_stmt ])
예제 #12
0
def inln_else_clauses():  return Optional( inln_stmts ), And([ EOF, new_line ])
def inln_stmts():         return statement, ZeroOrMore( ':', inln_stmts )
예제 #13
0
def inln_then_clauses():  return Optional( inln_stmts ), And( 'Else' )
def inln_else_clauses():  return Optional( inln_stmts ), And([ EOF, new_line ])
예제 #14
0
def sub_body():         return [ ( labels, sub_body_stmt ), sub_body_stmt ], ZeroOrMore( statement_sep, sub_body ), And( statement_sep, sub_end )
def sub_end():          return 'End', 'Sub'
예제 #15
0
def until_block_maybe():
    return __(r'.*?(?=>)'), And(literal('>'))
 def grammar():
     return "a", And("b"), ["c", "b"], EOF
예제 #17
0
def do_stmt_block():    return [ ( labels, do_stmt ), do_stmt ], ZeroOrMore( statement_sep, do_stmt_block ), And( statement_sep, 'Loop' )
def do_stmt():          return [ ( 'Exit', 'Do' ), statement ]
예제 #18
0
def term_end_lookahead():
    return And([space, ')', EOF])
예제 #19
0
def skip_to_end_of_file():
    return __(r'.+'), And(EOF)