Ejemplo n.º 1
0
def p_statement(p):
    '''statement : varAssignment 
                 | procedureDeclaration
                 | procedureCall
                 | builtInFunction
                 | ifStatement
                 | forLoop
                 | printStatement'''
    p[0] = ASTNode("statement", [p[1]])
Ejemplo n.º 2
0
def p_builtInFunction(p):
    '''builtInFunction : delay
                       | listOperation
                       | listInsert
                       | matrixInsert
                       | listDelete
                       | matrixDelete
                       | blink'''
    p[0] = ASTNode("builtInFunction", ([p[1]]))
Ejemplo n.º 3
0
def p_varValue(p):
    '''varValue : ID
                | indexedId
                | INTEGER
                | numExpression
                | idNegation
                | BOOLEAN
                | list
                | listDimension
                | listRange
                | len'''
    p[0] = ASTNode("varValue", ([p[1]]))
Ejemplo n.º 4
0
def p_forLoop(p):
    'forLoop : FOR ID IN iterable LBRACE statementList RBRACE SEMICOLON'
    p[0] = ASTNode("forLoop", (p[1], p[2], p[3], p[4], p[5], p[6], p[7]))
Ejemplo n.º 5
0
def p_idList_many(p):
    'idList : ID COMMA idList'
    p[0] = ASTNode("idListMany", (p[1], p[2], p[3]))
Ejemplo n.º 6
0
def p_varAssignment(p):
    '''varAssignment : simpleAssignment
                     | indexAssignment
                     | multipleDeclaration'''
    p[0] = ASTNode("varAssignment", [p[1]])
Ejemplo n.º 7
0
def p_arguments_many(p):
    'arguments : argument COMMA arguments'
    p[0] = ASTNode("arguments", (p[1], p[2], p[3]))
Ejemplo n.º 8
0
def p_indexedId(p):
    'indexedId : ID index'
    p[0] = ASTNode("indexedId", (p[1], p[2]))
Ejemplo n.º 9
0
def p_indexMany(p):
    'index : index index'
    p[0] = ASTNode("index", (p[1], p[2]))
Ejemplo n.º 10
0
def p_statementList_one(p):
    'statementList : statement '
    p[0] = ASTNode("statementList", [p[1]])
Ejemplo n.º 11
0
def p_simpleAssignment(p):
    'simpleAssignment : ID ASSIGN varValue SEMICOLON'
    p[0] = ASTNode("simpleAssignment", (p[1], p[2], p[3], p[4]))
Ejemplo n.º 12
0
def p_statementList_empty(p):
    'statementList : empty'
    p[0] = ASTNode("statementList", [p[1]])
Ejemplo n.º 13
0
def p_procedureCall_parameters(p):
    'procedureCall : CALL ID LPARENTHESES arguments RPARENTHESES SEMICOLON'
    p[0] = ASTNode("procedureCall", (p[1], p[2], p[3], p[4], p[5], p[6]))
Ejemplo n.º 14
0
def p_statementList_many(p):
    'statementList : statement statementList'
    p[0] = ASTNode("statementList", (p[1], p[2]))
Ejemplo n.º 15
0
def p_procedureDeclaration_noParameters(p):
    'procedureDeclaration : PROCEDURE ID LPARENTHESES RPARENTHESES LBRACE statementList RBRACE SEMICOLON'
    p[0] = ASTNode("procedureDeclaration",
                   (p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8]))
Ejemplo n.º 16
0
def p_argument(p):
    'argument : varValue'
    p[0] = ASTNode("argument", [p[1]])
Ejemplo n.º 17
0
def p_varValueList_one(p):
    'varValueList : varValue'
    p[0] = ASTNode("varValueListOne", [p[1]])
Ejemplo n.º 18
0
def p_forLoop_step(p):
    'forLoop : FOR ID IN iterable STEP INTEGER LBRACE statementList RBRACE SEMICOLON'
    p[0] = ASTNode("forLoop",
                   (p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9]))
Ejemplo n.º 19
0
def p_varValueList_many(p):
    'varValueList : varValue COMMA varValueList'
    p[0] = ASTNode("varValueListMany", (p[1], p[2], p[3]))
Ejemplo n.º 20
0
def p_iterable(p):
    '''iterable : ID
                | indexedId
                | INTEGER
                | len'''
    p[0] = ASTNode("iterable", [p[1]])
Ejemplo n.º 21
0
def p_indexAssignment(p):
    'indexAssignment : ID index ASSIGN varValue SEMICOLON'
    p[0] = ASTNode("indexAssignment", (p[1], p[2], p[3], p[4], p[5]))
Ejemplo n.º 22
0
def p_ifStatement(p):
    'ifStatement : IF ifIterable COMPARATOR comparisonValue LBRACE statementList RBRACE SEMICOLON'
    p[0] = ASTNode("ifStatement", (p[1], p[2], p[3], p[4], p[5], p[6], p[7]))
Ejemplo n.º 23
0
def p_indexOne(p):
    'index : LSQUAREBRACKET indexValue RSQUAREBRACKET'
    p[0] = ASTNode("index", (p[1], p[2], p[3]))
Ejemplo n.º 24
0
def p_multipleDeclaration(p):
    'multipleDeclaration : ID COMMA idList ASSIGN varValue COMMA varValueList SEMICOLON'
    p[0] = ASTNode("multipleDeclaration",
                   (p[1], p[2], p[3], p[4], p[5], p[6], p[7]))
Ejemplo n.º 25
0
def p_indexValue(p):
    '''indexValue : INTEGER 
                  | ID
                  | indexPair
                  | indexRange'''
    p[0] = ASTNode("indexValue", ([p[1]]))
Ejemplo n.º 26
0
def p_procedureCall_noParameters(p):
    'procedureCall : CALL ID LPARENTHESES RPARENTHESES SEMICOLON'
    p[0] = ASTNode("procedureCall", (p[1], p[2], p[3], p[4], p[5]))
Ejemplo n.º 27
0
def p_ifIterable(p):
    '''ifIterable : ID
                 | indexedId'''
    p[0] = ASTNode("ifIterable", [p[1]])
Ejemplo n.º 28
0
def p_arguments_one(p):
    'arguments : argument'
    p[0] = ASTNode("arguments", [p[1]])
Ejemplo n.º 29
0
def p_idList_one(p):
    'idList : ID'
    p[0] = ASTNode("idListOne", [p[1]])
Ejemplo n.º 30
0
def p_comparisonValue(p):
    '''comparisonValue : BOOLEAN
                       | INTEGER'''
    p[0] = ASTNode("comparisonValue", [p[1]])