Esempio n. 1
0
def p_statement(p):
    '''statement : varAssignment 
                 | procedureDeclaration
                 | procedureCall
                 | builtInFunction
                 | ifStatement
                 | forLoop
                 | printStatement'''
    p[0] = ASTNode("statement", [p[1]])
Esempio n. 2
0
def p_builtInFunction(p):
    '''builtInFunction : delay
                       | listOperation
                       | listInsert
                       | matrixInsert
                       | listDelete
                       | matrixDelete
                       | blink'''
    p[0] = ASTNode("builtInFunction", ([p[1]]))
Esempio n. 3
0
def p_varValue(p):
    '''varValue : ID
                | indexedId
                | INTEGER
                | numExpression
                | idNegation
                | BOOLEAN
                | list
                | listDimension
                | listRange
                | len'''
    p[0] = ASTNode("varValue", ([p[1]]))
Esempio 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]))
Esempio n. 5
0
def p_idList_many(p):
    'idList : ID COMMA idList'
    p[0] = ASTNode("idListMany", (p[1], p[2], p[3]))
Esempio n. 6
0
def p_varAssignment(p):
    '''varAssignment : simpleAssignment
                     | indexAssignment
                     | multipleDeclaration'''
    p[0] = ASTNode("varAssignment", [p[1]])
Esempio n. 7
0
def p_arguments_many(p):
    'arguments : argument COMMA arguments'
    p[0] = ASTNode("arguments", (p[1], p[2], p[3]))
Esempio n. 8
0
def p_indexedId(p):
    'indexedId : ID index'
    p[0] = ASTNode("indexedId", (p[1], p[2]))
Esempio n. 9
0
def p_indexMany(p):
    'index : index index'
    p[0] = ASTNode("index", (p[1], p[2]))
Esempio n. 10
0
def p_statementList_one(p):
    'statementList : statement '
    p[0] = ASTNode("statementList", [p[1]])
Esempio n. 11
0
def p_simpleAssignment(p):
    'simpleAssignment : ID ASSIGN varValue SEMICOLON'
    p[0] = ASTNode("simpleAssignment", (p[1], p[2], p[3], p[4]))
Esempio n. 12
0
def p_statementList_empty(p):
    'statementList : empty'
    p[0] = ASTNode("statementList", [p[1]])
Esempio 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]))
Esempio n. 14
0
def p_statementList_many(p):
    'statementList : statement statementList'
    p[0] = ASTNode("statementList", (p[1], p[2]))
Esempio 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]))
Esempio n. 16
0
def p_argument(p):
    'argument : varValue'
    p[0] = ASTNode("argument", [p[1]])
Esempio n. 17
0
def p_varValueList_one(p):
    'varValueList : varValue'
    p[0] = ASTNode("varValueListOne", [p[1]])
Esempio 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]))
Esempio n. 19
0
def p_varValueList_many(p):
    'varValueList : varValue COMMA varValueList'
    p[0] = ASTNode("varValueListMany", (p[1], p[2], p[3]))
Esempio n. 20
0
def p_iterable(p):
    '''iterable : ID
                | indexedId
                | INTEGER
                | len'''
    p[0] = ASTNode("iterable", [p[1]])
Esempio 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]))
Esempio 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]))
Esempio n. 23
0
def p_indexOne(p):
    'index : LSQUAREBRACKET indexValue RSQUAREBRACKET'
    p[0] = ASTNode("index", (p[1], p[2], p[3]))
Esempio 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]))
Esempio n. 25
0
def p_indexValue(p):
    '''indexValue : INTEGER 
                  | ID
                  | indexPair
                  | indexRange'''
    p[0] = ASTNode("indexValue", ([p[1]]))
Esempio 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]))
Esempio n. 27
0
def p_ifIterable(p):
    '''ifIterable : ID
                 | indexedId'''
    p[0] = ASTNode("ifIterable", [p[1]])
Esempio n. 28
0
def p_arguments_one(p):
    'arguments : argument'
    p[0] = ASTNode("arguments", [p[1]])
Esempio n. 29
0
def p_idList_one(p):
    'idList : ID'
    p[0] = ASTNode("idListOne", [p[1]])
Esempio n. 30
0
def p_comparisonValue(p):
    '''comparisonValue : BOOLEAN
                       | INTEGER'''
    p[0] = ASTNode("comparisonValue", [p[1]])