Beispiel #1
0
def p_EndpointSection(p):
    '''EndpointSection : Identifier CURLY_LEFT EndpointBodySection CURLY_RIGHT
                       | Identifier CURLY_LEFT CURLY_RIGHT'''
    p[0] = AstNode(AST_ENDPOINT,p[1].lineNo,p[1].linePos);

    p[0].addChild(p[1]);
    if (len(p) == 5):
        p[0].addChild(p[3]);
    elif len(p) == 4:
        # means that we had nothing defined in the endpoint create
        # empty versions so that type checking gets what it expects.
        bodySecChild = AstNode(AST_ENDPOINT_BODY_SECTION,p[1].lineNo,p[1].linePos);
        bodyGlobSec = AstNode(AST_ENDPOINT_GLOBAL_SECTION,p[1].lineNo,p[1].linePos);
        funcGlobSec = AstNode(AST_ENDPOINT_FUNCTION_SECTION,p[1].lineNo,p[1].linePos);
        bodySecChild.addChildren([bodyGlobSec,funcGlobSec]);
        p[0].addChild(bodySecChild);
Beispiel #2
0
def p_MultiplyEqual(p):
    '''
    MultiplyEqual : OperatableOn MULTIPLY_EQUAL ReturnableExpression
    '''
    to_assign_to = p[1]
    to_assign_with = p[3]
    
    p[0] = AstNode(
        AST_ASSIGNMENT_STATEMENT,to_assign_to.lineNo,to_assign_to.linePos)
    list_to_assign_to = AstNode(
        AST_OPERATABLE_ON_COMMA_LIST,to_assign_to.lineNo,to_assign_to.linePos)
    list_to_assign_to.addChild(to_assign_to)

    p[0].addChild(list_to_assign_to);
    multiplyNode = AstNode(AST_MULTIPLY,p[1].lineNo,p[1].linePos);
    multiplyNode.addChildren([to_assign_to,to_assign_with]);
    p[0].addChild(multiplyNode);
Beispiel #3
0
def p_PlusEqual(p):
    '''
    PlusEqual : OperatableOn PLUS_EQUAL ReturnableExpression
    '''
    to_assign_to = p[1]
    to_assign_with = p[3]
    
    p[0] = AstNode(
        AST_ASSIGNMENT_STATEMENT,to_assign_to.lineNo,to_assign_to.linePos)
    list_to_assign_to = AstNode(
        AST_OPERATABLE_ON_COMMA_LIST,to_assign_to.lineNo,to_assign_to.linePos)
    list_to_assign_to.addChild(to_assign_to)

    p[0].addChild(list_to_assign_to);
    plusNode = AstNode(AST_PLUS,p[1].lineNo,p[1].linePos);
    plusNode.addChildren([to_assign_to,to_assign_with]);
    p[0].addChild(plusNode);
Beispiel #4
0
def p_DivideEqual(p):
    '''
    DivideEqual : OperatableOn DIVIDE_EQUAL ReturnableExpression
    '''
    to_assign_to = p[1]
    to_assign_with = p[3]
    

    p[0] = AstNode(
        AST_ASSIGNMENT_STATEMENT,to_assign_to.lineNo,to_assign_to.linePos)
    list_to_assign_to = AstNode(
        AST_OPERATABLE_ON_COMMA_LIST,to_assign_to.lineNo,to_assign_to.linePos)
    list_to_assign_to.addChild(to_assign_to)

    p[0].addChild(list_to_assign_to);
    divideNode = AstNode(AST_DIVIDE,p[1].lineNo,p[1].linePos);
    divideNode.addChildren([to_assign_to,to_assign_with]);
    p[0].addChild(divideNode);