private Node procedureCall() throws ParserException {
	    enterRule(NonTerminal.PROCEDURE_CALL);
	    expect(TokenKind.COLON);
		expect(TokenKind.COLON);
	    Token functTok = expectRetrieve(TokenKind.IDENT);
	    Symbol decSym = symbolTable.inParentScopes(functTok.getLexeme(), "procedure");
	    if (decSym == null) printError(ErrorType.UNDEFINED_ERROR, functTok);
	    
	    expect(TokenKind.L_PAREN);
	    if (have(NonTerminal.PARAMETERS)) {
	    	List<Node> types = parameters(functTok);
	    	if (decSym.params == null && types.size() > 0) 
	    		prntMismatchInvCall(functTok, decSym, types);
	    	if (decSym.params != null) {
	    		if (types.size() != decSym.params.size()) 
	    			prntArtyInvCall(functTok, decSym, types);
		    	for (int i = 0; i < decSym.params.size(); i++) {
		    		if (!decSym.params.get(i).equals(types.get(i).type))
		    		   prntMismatchInvCall(functTok, decSym, types);
		    	}
	    	}
	    }
	    expect(TokenKind.R_PAREN);
	    exitRule(NonTerminal.PROCEDURE_CALL);
	    return new Node(functTok, decSym.getType());
	  }